繁体   English   中英

为什么Nil无法创建?

Why Object Nil can't create?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

出现错误:

无法创建对象,因为未定义成员节点:MyModule.List中的Option [(A,MyModule.List [A])]

 sealed trait List[+A] { def node: Option[(A, List[A])] def isEmpty = node.isEmpty } abstract class Cons[+A](head: A, tail: List[A]) extends List[A] object Nil extends List[Nothing] object List { def empty[A] = new List[A] { def node = None } def cons[A](head: A, tail: List[A]) = new List[A] { def node = Some((head, tail)) } def apply[A](as: A*):List[A] = { if (as.isEmpty) Nil else Cons(as.head, apply(as.tail: _*)) 
在这种情况下,如何实施? 我想知道应将哪些功能放入特征中,应将哪些功能放入公司对象中。

1 个回复

这是正确的实现:

sealed trait List[+A] {
  def node: Option[(A, List[A])]

  def isEmpty = node.isEmpty
}

case class Cons[+A](head: A, tail: List[A]) extends List[A] {
  override def node: Option[(A, List[A])] = Some((head, tail))
}

object Nil extends List[Nothing] {
  override def node: Option[(Nothing, List[Nothing])] = None
}

object List {
  def empty[A] = new List[A] {
    def node = None
  }

  def cons[A](head: A, tail: List[A]) = new List[A] {
    def node = Some((head, tail))
  }

  def apply[A](as: A*): List[A] = {
    if (as.isEmpty) Nil
    else Cons(as.head, apply(as.tail: _*))
  }
}

我在这里看到一些问题:

1)您有两个cons实现,可以更简单地实现cons方法:

  def cons[A](head: A, tail: List[A]) = Cons(head, tail)

2)与empty相同

  def empty[A] = Nil
1 对象参数为nil,无法确定原因

我认为这应该是非常直接的,但我不知道为什么这不起作用。 我已经接管了遗留代码,并且dll中使用的一些对象变得无法管理。 几个对象具有相同的过程 现在,这些方法基本上是巨大的if..else语句,它检查propName并指定propValue如果它与objects属性匹配: ...

2 DataMapper无法保存到mysql并创建id = nil的对象

我正在使用Ruby克隆Internet应用程序中的tinyclone示例,并且正在尝试创建一个要存储到mysql中的对象。 但是,每当我尝试创建一个Url对象时(参见下面的代码),结果总是“=> Url @ id = nil @ original =”http://www.gmail ...

3 为什么不能用Django创建对象?

我正在使用每个表单的模型,但是我无法保存记录,而jsconsole向我发送了http 200代码,服务器也向我发送了http / POST / http 1.1 200,但是在mysql db中,没有保存记录,怎么了? 这是我的功能 这是我的模型 这是我的forms.py ...

4 为什么我不能创建JSON对象?

我正在使用HTTP Get从我的网站检索JSON格式的字符串。 但是,当我尝试创建JSONObject时,没有任何反应。 该对象未创建,并且我无法访问Array或其中的任何内容。 我检查了我的应用程序是否获取正确的String并将其正确格式化为JSON。 我是否必须以某种特定 ...

5 为什么我不能用参数创建对象?

我已经被问题困扰了好几天了。 我无法使用表单中的参数创建对象。 我的表格: <%= form_with(model: @battle, local: true) do |form| %> <div class="field"> <%= form.collection ...

6 为什么我无法创建对象实例?

我需要添加对象列表,但我无法理解如何正确地做到这一点。 我从控制台获得的每个新对象。 怎么解决? 我的尝试: 在控制台我得到这个( elements == 1 ): ...

7 为什么不将对象默认为nil?

在Delphi中,从TObject下降的变量的记录行为是默认值nil。 但是,我遇到的情况并非如此。 通过IDE(F9)运行以下代码示例会得到混合结果 32位/调试模式,默认为零 32位/释放模式,默认为零 64位/调试模式,默认为零 64位/释放模式 ...

2014-04-16 17:17:51 2 1359   delphi
8 为什么 Lua 表索引不能为零?

如果已经问过这个问题,请原谅,但从我的研究中,我只发现用户遇到表索引为零的问题。 我的问题是为什么表索引不能为 nil/nan。 我可以理解为什么 nan 不能成为索引,因为它无法通过身份比较,但为什么不是 nil。 ...

10 为什么不能将Nil追加到列表中?

我有以下递归方法: 方法getMyObject可选地返回MyClass的实例。 不幸的是,我无法编译此代码,因为出现此错误: 此编译错误表明我无法将Nil追加到列表acc ,因此我必须使用以下代码: 但是,我更喜欢第一种方法,因为它更简洁。 为什么不能将Nil追加到列 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM