相关疑难解决方法(0)

选项[T]类有什么意义?

我无法理解Option[T]Scala中的课程要点.我的意思是,我不能看到任何advanages Nonenull.

例如,考虑代码:

object Main{
  class Person(name: String, var age: int){
    def display = println(name+" "+age)
  }

  def getPerson1: Person = {
    // returns a Person instance or null
  }

  def getPerson2: Option[Person] = {
    // returns either Some[Person] or None
  }

  def main(argv: Array[String]): Unit = {
    val p = getPerson1
    if (p!=null) p.display

    getPerson2 match{
      case Some(person) => person.display
      case None => /* Do nothing */
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

现在假设,该方法getPerson1返回null …

java monads null functional-programming scala

82
推荐指数
9
解决办法
9123
查看次数

是否有相当于Scala选项的红宝石?

如何在ruby中建模可选值?Scala有Option [],这是我在ruby中寻找的东西.

ruby scala scala-option

12
推荐指数
1
解决办法
2179
查看次数

在Clojure中是否有一种习惯性的替代方案?

我正在阅读一些Clojure代码,其中包含一堆未初始化的值,就像nil传入的记录中的数值一样.

现在很多Clojure图书馆都认为这是惯用语.这意味着它是一个公认的惯例.

但它也导致了NullPointerException,因为并非所有Clojure核心功能都可以处理nil输入.(也不应该).

其他语言具有Maybe或者Option在其为空时代理该值的概念,作为NullPointerException降低风险的方式.这在Clojure中是可能的 - 但不是很常见.

你可以做一些技巧,fnil但它并不能解决所有问题.

另一种方法是简单地将未初始化的值设置为符号,:empty-value以强制用户在所有处理代码中显式处理此场景.但这并不是一个很大的提升nil- 因为在运行时之前你并没有真正发现所有场景(在其他人的代码中).

我的问题是:在Clojure中是否存在一种惯用的替代品?

null clojure maybe

8
推荐指数
1
解决办法
1423
查看次数