相关疑难解决方法(0)

什么是Scala的收益?

我理解Ruby和Python的收益率.Scala的收益率是多少?

functional-programming scala yield

308
推荐指数
7
解决办法
12万
查看次数

没有null的语言的最佳解释

当程序员抱怨空错误/异常时,有人经常会问我们做什么而没有null.

我对选项类型的酷感有一些基本的想法,但我没有最好的表达它的知识或语言技巧.对于普通程序员可以接近的方式写的以下内容有什么好的解释,我们可以指出那个人?

  • 默认情况下,引用/指针的不可取性是可以为空的
  • 选项类型的工作原理包括简化检查空案例的策略
    • 模式匹配和
    • monadic理解
  • 替代解决方案,如消息吃零
  • (我错过了其他方面)

null programming-languages functional-programming nullpointerexception non-nullable

223
推荐指数
7
解决办法
4万
查看次数

为什么在Clojure中使用Maybe/Option并不是那么普遍?

为什么Clojure尽管如此强调功能范式,却不使用Maybe/ Optionmonad来表示可选值?Option在Scala中使用非常普遍,Scala是我经常使用的函数式编程语言.

monads functional-programming clojure option maybe

40
推荐指数
6
解决办法
8908
查看次数

Scala选项 - 摆脱if(opt.isDefined){}

我的代码变得乱七八糟,使用以下代码模式:

val opt = somethingReturningAnOpt
if (opt.isDefinedAt) {
    val actualThingIWant = opt.get
}
Run Code Online (Sandbox Code Playgroud)

有没有办法简化这个?(似乎不必要的复杂和代码味道).理想情况下它会是这样的:

if (Some(actualThingIWant) = somethingReturningAnOpt) {
   doSomethingWith(actualThingIWant)
}
Run Code Online (Sandbox Code Playgroud)

有可能吗?

scala scala-option

27
推荐指数
4
解决办法
2万
查看次数

何时使用Option

我学习Scala已有一段时间了,无法清楚地了解Option的用法.当我链接函数时,它可以帮助我避免空值检查(根据文档).这对我来说很清楚:)

接下来我看到Option可以作为开发人员的一种指示器,这里可以使用null值,并且必须对其进行处理.这是真的吗?如果是,我应该使用选项吗?例如

class Racer {
    val car = new Car()
}
Run Code Online (Sandbox Code Playgroud)

我有Racer类,我确定car field不能为null(因为它是常量并在创建Racer实例时得到一个值).这里不需要选项.

class Racer {
    var car = new Car()
}
Run Code Online (Sandbox Code Playgroud)

在这里,我这样做,以便汽车可以改变.并且有人可以为汽车分配零.我应该在这里使用Option吗?如果是,我注意到我所有的班级字段都是Option的候选者.我的代码看起来像这样

class Racer {
    var car: Option[Car] = None
    var currentRace: Option[Race] = None
    var team: Option[Team] = None
    ...
}
Run Code Online (Sandbox Code Playgroud)

它看起来不错吗?对我来说,似乎有点过度使用.

def foo(): Result = {
    if( something )
        new Result()
    else
        null
}
Run Code Online (Sandbox Code Playgroud)

我有一个可以返回null的方法.我应该返回Option吗?如果方法可以返回null,我是否应该总是这样做?

任何有关它的想法都会有所帮助.提前致谢!

我的问题类似于为什么选项,但我认为它不一样.它更多的是关于何时,而不是为什么.:)

scala

26
推荐指数
4
解决办法
1万
查看次数

scala.Some无法强制转换为java.lang.String

在这个应用程序中,我收到此错误:

scala.Some cannot be cast to java.lang.String
Run Code Online (Sandbox Code Playgroud)

在尝试这个时:

x.email.asInstanceOf[String]
Run Code Online (Sandbox Code Playgroud)

x.email是一个选项[String]

编辑:我知道我在这里处理不同的类型,我只是想知道是否有一个更简洁的方法什么都不做,然后一个

match { case....}
Run Code Online (Sandbox Code Playgroud)

序列.因为我将x.email转换为String以用于JSON目的,所以JSON对象将处理空字段,并且我没有明确地处理它.很抱歉不清楚!!

casting scala scalatra

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

Scala错误表明val不是模型对象的成员,尽管它是?

简介:我从成员事务表中提取用户ID列表,然后用于从数据库生成用户列表.然后,这将用于生成发送到列出与帐户关联的用户的页面的JSON.

背景:在游戏中使用Squeryl的Scala代码!骨架

错误: value id is not a member of Option[models.User]将用户映射到JSON生成器时

代码:这里的代码连续用于最终生成JSON

def memberIds(accountId: Long) = { from(DB.members)(m =>
      where(m.accountId === accountId)
        select (m)).map(_.userId).toSet
  }

def membersToAccount(id: Long) = {
    memberIds(id).map( i => models.User.get(i))
  }

def listMembers(accountId: Long) = {
    Json(generate(Account.membersToAccount(accountId)
      .map(user => Map(
      "id" -> user.id,
      "name" -> user.name,
      "username" -> user.username
    ))))
  }
Run Code Online (Sandbox Code Playgroud)

困惑: User类包含一个id值,看起来case class User( val id: Long, etc.我很困惑为什么会产生这个错误.是语法问题还是我映射用户的问题?谢谢!

scala

3
推荐指数
1
解决办法
6670
查看次数

可选的引用类型

可能重复:
为什么选项[T]?

引用类型提供特殊值,null表示"缺少值".值类型没有这样的值,这就是C#引入可选值类型(以及它们的特殊语法)的原因.

Scala的Option[T]有三种不同的"空"值:null,NoneSome(null).在安全性和可表达性方面,这增加了多少复杂性给我们带来了什么?我什么时候使用哪个?

c# null scala nullable option

2
推荐指数
1
解决办法
480
查看次数

Scala Option vs Java null

可能重复:
为什么选项[T]?

我是Scala的新手,我无法真正感受到java和OptionScala上的null之间的区别.我知道没有一个是对象,如果我在Scala上写这样的smth,它会安全的:

val map = Map("koko" -> "is a cat")
val string:Option[String] =map.get("other")
println(string.map(a=>println(a.toString)) )
Run Code Online (Sandbox Code Playgroud)

我得到None的结果不是抛出异常.这真有趣 .

但是,如果我需要返回值不被包装Some.我将使用.get来返回值.

在我们的例子中,它将抛出异常:

map.get("other").get.map(a=>println(a.toString))
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用"匹配"来处理这个问题.我正在这里,我需要了解Scala上的选项对于java上的null有什么兴趣!

我仍然无法得到的是我如何使用Option的优点但是如果我的变量中存在值,则返回值不 Some(value)

def testOption(): String = {
  val map = Map("koko" -> "is a cat")
  val string: Option[String] = map.get("koko")
  string
}
Run Code Online (Sandbox Code Playgroud)

我的意思是有任何方法使这段代码工作,而不是更新返回值Option[String]!想象一下,我必须返回一个String才能被设置为我的bean变量,而不是String类型Option[String]

我怎么能没有任何形式的作品match!我想如果有它可以使它有效,那将使我更好地理解它的力量Option.

scala

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