相关疑难解决方法(0)

为什么scala占位符不起作用

大家好,我正在尝试理解scala中的符号"_",它看起来像一个通配符,但我不明白为什么在给定的场景中.

   var l = List("a","b" ,"c")
   // Works "s" works as a variable.
   l.foreach( s =>
     if(s=="a"){
       print(s)
     }
   )

   // Works _ takes the place of "s"
   l.foreach(
     print(_)
   )

  //So the doubt is whether "_" is a wildcard that does not work well.

  l.foreach(
    if(_=="a"){
      print(_)
    }
  )
Run Code Online (Sandbox Code Playgroud)

"_"应该像变量一样s,但为什么不呢?

scala

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

思考在榆树中看到的模式名称以及其他类似案例

我现在是FP的学生.当我查看不同函数语言的不同语法提供时,我在Elm示例代码中遇到了一个模式.我很好奇.

这是示例代码

myList = [{foo = "bar1"},{foo = "bar2"}]    
foos = myList |> List.map .foo
Run Code Online (Sandbox Code Playgroud)

在这里的最后一行,List.map正在通过.foo.我相信这种风格被称为无点,但是将属性传递给List.map函数的具体模式又如何呢?

这是更常见的事情吗?是否可以在Haskell中执行此操作?F#?Scala呢?谢谢你的帮助.

这里的模式的正式(或非正式?)名称是什么?对象的属性用作获取对象并在其上调用所述属性的函数的简写?

f# haskell scala pointfree elm

5
推荐指数
2
解决办法
191
查看次数

Scala/Play的语法和含义!代码示例

我有以下Scala/Play!码:

case class Tweet(from: String, text: String)

implicit val tweetReads = (
 (JsPath \ "from_user_name").read[String] ~
 (JsPath \ "text").read[String]) (Tweet.apply _)
Run Code Online (Sandbox Code Playgroud)

关于上面代码的语法和含义,我有几个问题:

  • 在什么类/对象上~调用的方法?
  • 参数的类/类型是Tweet.apply什么?

编辑1:完整源代码:

package models

import play.api.libs.json._
import play.api.libs.json.util._
import play.api.libs.json.Reads._
import play.api.libs.json.Writes._
import play.api.libs.functional.syntax._

case class Tweet(from: String, text: String)

object Tweet {

  implicit val tweetReads = (
      (JsPath \ "from_user_name").read[String] ~
      (JsPath \ "text").read[String])(Tweet.apply _)

  implicit val tweetWrites = (
    (JsPath \ "from").write[String] ~
    (JsPath \ …
Run Code Online (Sandbox Code Playgroud)

scala playframework

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

在哪里搜索Scala语法 - 保留字,关键字,运算符?

谷歌似乎不是一个搜索Scala语法的好地方.那有什么好的地方,比如保留字<:吗?谢谢

scala operators

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

Int => Int = _ + 1中_的用法是什么

在下面的代码中,下划线字符的使用的分类(或技术名称)是什么?

scala> def f: Int => Int = _ + 1
f: Int => Int

scala> f(2)
res0: Int = 3
Run Code Online (Sandbox Code Playgroud)

scala

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

将下划线传递给类型构造函数

我今天遇到了一种方法,该方法具有以下特征:

def foo() : Future[_] = { /* some code */ }
Run Code Online (Sandbox Code Playgroud)

我的问题是返回类型在这里是什么意思?这是否意味着此方法返回a Future并且我不在乎计算的类型是什么?或者是别的什么?

types scala existential-type

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

scala方法调用后的下划线是什么意思?

阶文档具有一个代码示例,其包括下面的行:

val numberFunc = numbers.foldLeft(List[Int]())_
Run Code Online (Sandbox Code Playgroud)

方法调用后的下划线是什么意思?

scala

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

Scala 中 case 语句中的 cons 运算符

所以我阅读了右结合运算符,例如 Scala 中的 cons 运算符。我想知道为什么它们在 case 语句中起作用。似乎您可以在这里使用 cons 语句进行模式匹配?

def findKth1[A](k:Int, l:List[A]):A = (k, l) match {
    case (0, h::_) => h
    case(k, _::tail) if k > 0 => findKth1(k - 1, tail)
    case _ => throw new NoSuchElementException
}

findKth1(2, List(3,4,5,6))  

res1: Int = 5
Run Code Online (Sandbox Code Playgroud)

占位符在这里做什么?我只看到了这样的功能使用的占位符:<SomeList>.map(_.doThing)。是同一个概念吗?

唯一能与区别::,并:::是,:::用于右2名名单?

scala

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

为什么 ((_: Int, _: Int) =&gt; _ / _) 当 ((_: Int) / (_: Int)) 不编译?

我正在学习 Scala 并且有一个非常基本的问题。考虑使用占位符语法的以下两个表达式 -

// Syntax A  
val fnA = (_: Int, _: Int) => _ / _

// Syntax B
val fnB = (_: Int) / (_: Int) 
Run Code Online (Sandbox Code Playgroud)

以及他们尝试的应用——

// Syntax A
fnA(33, 3)

// Syntax B
fnB(33, 3)
Run Code Online (Sandbox Code Playgroud)

在这两个中,只有 B 和 App(B) 是有效的语法,我不知道为什么。如果编译器能够推断参数(以及应用它们的顺序),fnB为什么它不能为fnA?我的问题是基于fnB一个简写的前提,fnA我很确定这种推理存在缺陷。我只是不确定缺陷是什么。

scala scala-placeholder-syntax

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

占位符语法不能保留我的位置

我已经阅读了一些其他问题,例如Scala中下划线的所有用途是什么?虽然我确信这个问题已被提出,但我无法解决所有其他17000个Scala问题.

有一个Foreach有奇怪的行为,占位符没用,但它似乎仍然是一个隐藏的功能:

scala> val is = (1 to 5) toList
is: List[Int] = List(1, 2, 3, 4, 5)

scala> is foreach { i => println("Hi.") ; Console println 2 * i }
Hi.
2
Hi.
4
Hi.
6
Hi.
8
Hi.
10

scala> is foreach { println("Hi.") ; Console println 2 * _ }
Hi.
2
4
6
8
10
Run Code Online (Sandbox Code Playgroud)

请有人解释一下我的区别吗?

如果你感到一阵热情并尝试:

scala> is foreach { i => println("Hi!") ; Console println …
Run Code Online (Sandbox Code Playgroud)

scala

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