Scala无类型参数实现hasDigit函数问题求助
实现符合要求的Scala
hasDigit 函数 嘿,这个问题刚好踩中Scala函数式编程的核心思路!咱们直接上完全符合你要求的实现代码:
def hasDigit(s: String): Boolean = s.exists(Character.isDigit)
为什么这个实现满足所有限制?
咱们一条条核对你的要求:
- 没有循环:这里用的是String类内置的
exists高阶函数,它内部帮我们处理了遍历逻辑,完全不需要手动写for/while循环 - 没有var/val声明:整个函数里没有定义任何变量,纯靠函数调用完成逻辑
- 没有递归:不存在函数自身调用的情况,全程依赖标准库的现有方法
- 没有类型参数:函数参数明确是
String类型,返回Boolean,完全没用到泛型参数
简单拆解下逻辑
s.exists(predicate)方法的作用是:检查字符串中是否存在至少一个字符满足传入的谓词条件(返回Boolean的函数)。只要找到第一个符合条件的字符,就会立刻返回true,不用遍历整个字符串,效率也很可观。Character.isDigit是Java标准库提供的工具方法,专门用来判断一个字符是否是数字,直接把它作为谓词传给exists就行,简洁又靠谱。
如果你不想依赖Java的工具方法,也可以用纯Scala的方式实现谓词,同样符合要求:
def hasDigit(s: String): Boolean = s.exists(c => c >= '0' && c <= '9')
这里的lambda表达式直接判断字符是否在数字字符的范围内,同样不需要任何变量声明。
内容的提问来源于stack exchange,提问作者André Azevedo
相关产品推荐
相关产品推荐

