打印变量

sza*_*tan 4 ruby oop

我的问题可能很简单,但我无法在任何地方找到答案.

创建类时,例如:

class Book
  @author = "blabla"
  @title = "blabla"
  @number_of_pages"
Run Code Online (Sandbox Code Playgroud)

我想创建一个方法来打印我的变量.我尝试时遇到问题:

def Print
  puts @author, @title, @number_of_pages
end
Run Code Online (Sandbox Code Playgroud)

我一无所获.

当我尝试:

def Print
  puts "@author, @title, @number_of_pages"
end
Run Code Online (Sandbox Code Playgroud)

我直截了当:"@ author,@ title,@ number_of_pages"

如何使Print方法打印出变量的值?

Dar*_*tle 9

您应该将变量初始化移动到initialize:

class Book
  def initialize
    @author = "blabla"
    @title = "blabla"
    @number_of_pages = 42 # You had a typo here...
  end
end
Run Code Online (Sandbox Code Playgroud)

你在问题中的方式,变量是类实例变量(你可以谷歌,如果你好奇,但它在这里并不真正相关).

初始化为(正常)实例变量,Print()如果您只是想要转储状态,那么您的第一个版本的工作 - 它会在自己的行上打印每个参数.

要制作第二个版本的Print()工作,您需要将变量包装起来以#{}进行插值:

def print # It's better not to capitalize your method names
  puts "#{@author}, #{@title}, #{@number_of_pages}"
end
Run Code Online (Sandbox Code Playgroud)