小编Man*_*raf的帖子

何时在Scala特征中使用val或def?

我正想通过有效的斯卡拉幻灯片,并提到在幻灯片10至从来不使用valtrait抽象成员和使用def来代替.幻灯片没有详细提及为什么val在a中使用抽象trait是一种反模式.如果有人可以解释在抽象方法的特性中使用val vs def的最佳实践,我将不胜感激

inheritance scala traits

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

在Scala中重新分配给val

我正在Scala中进行训练并获得此val重新分配错误.我没有看到我将一个新值重新分配给val

class personTest
{
  val alf = Person("Alf", 30, List(EmailAddress("alf.kristian@gmail.com")))
  val fredrik = Person("Fredrik", 33, List(EmailAddress("fredrik@vraalsen.no"), EmailAddress("fvr@knowit.no")))
  val johannes = Person("Johannes", 0, Nil)

  val persons = List(alf, fredrik, johannes)

   @Test
  def testNameToEmailAddress
  {
    // Create a map from each persons name to their e-mail addresses,
    // filtering out persons without e-mail addresses
    // Hint: First filter list, then use foldLeft to accumulate...
    val emptyMap: Map[String, List[EmailAddress]] = Map()

    val nameToEmail = persons.filter(_.emailAddresses.length>0).foldLeft(emptyMap)((b,p)=> b+=p.name->p.emailAddresses)

    assertEquals(Map(alf.name -> alf.emailAddresses, fredrik.name -> fredrik.emailAddresses), nameToEmail) …
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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

Scala:如何在元组的每个元素上调用trim

我需要编写一个函数,它接受任意大小的字符串元组,在每个元素上调用trim并返回一个新的元组.我有点陷在下面这一点,代码已经不是类型安全了.另外,一旦我将它转换为迭代器,我不知道如何回到元组.有没有更优雅的方法来解决这个问题?解决方案需要适用于Scala 2.9.2

  def trim(input:Product)={
    input.productIterator.asInstanceOf[Iterator[String]].map(_.trim)
  }
Run Code Online (Sandbox Code Playgroud)

scala tuples

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

标签 统计

scala ×3

inheritance ×1

scala-collections ×1

traits ×1

tuples ×1