我是Scala
的新人。
我在名为Vector
的课程中有Sentence
:
val tree: Option[Vector[Node]]
此类的构造函数接收Array[String]
个单词。对于每个单词,我必须创建一个Node
对象(已创建一个类I),然后用所有节点填充Vector
。
我正在尝试填充tree
,但我在编写代码时遇到了问题。我尝试过使用:
private val tree: Option[Vector[Node]] =
words.foreach(w => new Node(w, 9, "d", 0))
private val tree: Option[Vector[Node]] =
words.foreach(w => tree :: new Node(w, 9, "d", 0))
我也试过了map
,但它不起作用。
我怎样才能为每个单词创建Node
并将其添加到Vector
?
注意:如果您需要更多代码,请告诉我并更新问题。
答案 0 :(得分:2)
问题是您使用的是 //Create a web request with the specified URL
string path = @"http://localhost/test.xml1";
WebRequest myWebRequest = WebRequest.Create(path);
//Senda a web request and wait for response.
try
{
WebResponse objwebResponse = myWebRequest.GetResponse();
Stream stream= objwebResponse.GetResponseStream();
}
catch (WebException ex) {
if (((HttpWebResponse)(ex.Response)).StatusCode == HttpStatusCode.NotFound) {
throw new FileNotFoundException(ex.Message);
}
}
。对于foreach
,Array[A]
具有签名foreach
。这里,参数函数def foreach(f: (A) ⇒ Unit): Unit
的返回类型是f
,这意味着它不应该返回任何内容,只是对数组中的每个元素执行某些操作(如print)。
您要找的是Unit
,其中包含签名map
。这里,参数函数def map[B](f: (A) ⇒ B): Array[B]
的返回类型是f
,这意味着它应该返回类型为B
的实例。因此,对于B
类型的每个元素,A
将应用map
来计算类型为f
的实例。
B
答案 1 :(得分:1)
简单地:
// map each word to a Node
val tree: Array[Node] = words.map(w => new Node(w, 9, "d", 0))
如果您想要Vector
:
val treeVector: Vector[Node] = tree.toVector
Option
并没有带来多少,因为它等同于emty Vector
。