Ruby 使用此处文档打印

Ruby printing using here documents

我对 Ruby 完全陌生。我正在尝试使用一种方法打印 class 的类型和名称,但出现了我无法弄清楚的语法错误:

Code/oop.rb:47: syntax error, unexpected end-of-input
    puts <<TYPE, <<EOF, <<NAME
               ^

这是我的代码:

def whatClass()
    class_type = self.type
    class_name = self.name

    puts <<TYPE, <<EOF, <<NAME
        class_type
    TYPE
        \n
    EOF
        class_name
    NAME     
end

试试这个:

def whatClass()
    class_type = self.type
    class_name = self.name
    puts "#{class_type} \n #{class_name}"

end

有多个错误。

序言:typename 不是标准方法。在下面的示例中,我将其替换为字符串。

当您像这样使用 Here-Documents 时:

puts <<HEREDOC
  Heredoc
HEREDOC

然后结束 HEREDOC 必须从第 0 列开始,并且可以没有尾随空格。如果有前导空格,则必须以 <<-HEREDOC:

开头
puts <<-HEREDOC
  Heredoc
  HEREDOC

所以你的例子是:

  def whatClass()
    class_type = 'type' #self.type undefined method `type'
    class_name = 'name' #self.name

    puts <<-TYPE, <<-EOF, <<-NAME
        class_type
    TYPE
        \n
    EOF
        class_name
    NAME
  end

再说一遍:TYPEEOFNAME 中可能没有尾随空格(当我以剪切+粘贴为例时,[=21 处有尾随空格=]).

下一个错误:

输出为

        class_type


        class_name

但我想你想要两个变量的内容。所以我认为你需要:

  def whatClass()
    class_type = 'type' #self.type undefined method `type'
    class_name = 'name' #self.name

    puts <<-TYPE, <<-EOF, <<-NAME
    #{class_type}
    TYPE
        \n
    EOF
    #{class_name}
    NAME
  end