小编viv*_*mar的帖子

收益率和收益率之间的差异?

谁能帮助我理解"收益自我"和"收益率"之间的区别?

class YieldFirstLast
    attr_accessor :first, :last

    def initialize(first = nil, last = nil)
        @first = first
        @last = last
        yield self if block_given?
    end

    def hello
        puts "#{@first} #{@last} says hello!"
    end
end
Run Code Online (Sandbox Code Playgroud)

ruby yield self

11
推荐指数
2
解决办法
5598
查看次数

我如何使用重载的case类构造函数仍然使用模式匹配?

当我找到这个例子时,我试图学习模式匹配.似乎case类模式匹配不适用于重载的case类构造函数.

case class MyClass(var first:String, var last:String){
 def this(first: String) = this(first, "")
 override def toString = "First: "+ first + " Last:" +last
}

val myClassTwo = new MyClass("a", "b")
myClassTwo match {
   case MyClass(a,b) => println("two constructor matched")
   case MyClass(a) => println("one constructor matched")
   case _ => println("Not matched")
  } 
Run Code Online (Sandbox Code Playgroud)

我收到编译错误"模式MyClass的参数错误(第一个:字符串,最后:字符串)在"案例MyClass(a)"行.我期望模式匹配适用于重载的构造函数,但它不能正常工作有人可以解释一下这种行为吗?

另外,我得到一个构造函数参数的错误结果.

 val myClassOne = new MyClass("a")      
  myClassOne match {
   case MyClass(a,b) => println("two constructor matched")
   case _ => println("Not matched")
  } 
Run Code Online (Sandbox Code Playgroud)

即使myClassOne只有一个agrument,这也会产生"两个匹配的构造函数" .请解释.

scala overloading pattern-matching case-class

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

标签 统计

case-class ×1

overloading ×1

pattern-matching ×1

ruby ×1

scala ×1

self ×1

yield ×1