gpt4 book ai didi

string - 如何在 Scala 的运行时将字符串转换为符号?

转载 作者:行者123 更新时间:2023-12-04 13:39:56 25 4
gpt4 key购买 nike

我有一个看起来像这样的案例类:

case class Outcome(text: Symbol)

现在我需要在运行时更改文本的值。我尝试做这样的事情:
val o2 = o1.copy(text.name = "foo" ++ text.name)

这显然给了我一个编译错误:
type mismatch; found : String required: Symbol

如何将符号转换为字符串,附加/添加某些内容并再次将其更改为符号?或者更简单,如何更改符号的名称?

最佳答案

您可以使用 Symbol.apply方法:

Symbol("a" + "b")
// Symbol = 'ab

val o2 = o1.copy(text = Symbol("foo" + o1.text.name))

scalaz 中有一个处理嵌套结构的有用工具。 - Lens
import scalaz._, Scalaz._

case class Outcome(symbol: Symbol)
val symbolName = Lens.lensu[Symbol, String]( (_, str) => Symbol(str), _.name)
val outcomeSymbol =
Lens.lensu[Outcome, Symbol]( (o, s) => o.copy(symbol = s), _.symbol)
val outcomeSymbolName = outcomeSymbol >=> symbolName

val o = Outcome('Bar)

val o2 = outcomeSymbolName.mod("foo" + _, o)
// o2: Outcome = Outcome('fooBar)

关于string - 如何在 Scala 的运行时将字符串转换为符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20784518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com