我可以以某种方式缓存i.toString这个简单的函数定义吗?
def palindrome(i: Int) = i.toString == i.toString.reverse
Run Code Online (Sandbox Code Playgroud)
我想保持这个功能简单,没有经典的多线,支撑功能..
你可以这样做:
def palindrome(i: Int) = ((s:String) => s == s.reverse)(i.toString)
Run Code Online (Sandbox Code Playgroud)
好吧,Scala没有像一些传统函数式语言那样的let语句,但这主要是因为val + braces实现了同样的目的.您是否反对多线部分或一般支撑?因为它很难被击败:
def palindrome(i: Int) = { val s = i.toString; s == s.reverse }
Run Code Online (Sandbox Code Playgroud)
试图忽略大括号可能只会推动人物数量的增加.
使用正向管道运算符:
scala> implicit class PipedObject[A](value: A) {
| def |>[B](f: A => B): B = f(value)
| }
defined class PipedObject
scala> def palindrome(i: Int) = i.toString |> (s => s == s.reverse)
palindrome: (i: Int)Boolean
Run Code Online (Sandbox Code Playgroud)
虽然这可以优雅地解决您的问题,但我建议将palindromefrom 的签名更改palindrome(Int)为palindrome(String)并将其调用palindrome(i.toString)(并将其重命名为isPalindrome).
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |