据说,当我们有一个班级Point并知道如何执行point * 3如下操作:
class Point
def initialize(x,y)
@x, @y = x, y
end
def *(c)
Point.new(@x * c, @y * c)
end
end
point = Point.new(1,2)
p point
p point * 3
Run Code Online (Sandbox Code Playgroud)
输出:
#<Point:0x336094 @x=1, @y=2>
#<Point:0x335fa4 @x=3, @y=6>
Run Code Online (Sandbox Code Playgroud)
但是之后,
3 * point
Run Code Online (Sandbox Code Playgroud)
不明白:
Point不能强迫进入Fixnum(TypeError)
所以我们需要进一步定义一个实例方法coerce:
class Point
def coerce(something)
[self, something]
end
end
p 3 * point
Run Code Online (Sandbox Code Playgroud)
输出:
#<Point:0x3c45a88 @x=3, @y=6>
Run Code Online (Sandbox Code Playgroud)
所以据说3 * point是一样的3.*(point).也就是说,instance方法 …
这3种语言/框架的最佳用途是什么?混合所有这些(或2)是否有用?
我最近在JavaScript程序的每一行中都放了console.log语句,发现它现在更容易理解.有没有办法用服务器端代码,特别是Ruby?我认为没有办法在萤火虫中读取它,但是它会在irb中可见吗?我将在Ruby代码中放入哪些console.log等效语句?
是否存在一些隐藏的Ruby/Rails-magic,只有在它存在时才调用方法?
让我们说我想打电话
resource.phone_number
Run Code Online (Sandbox Code Playgroud)
但我事先不知道资源是否响应phone_number.一种方法是
resource.phone_number if resource.respond_to? :phone_number
Run Code Online (Sandbox Code Playgroud)
如果在错误的地方使用,那就不是那么好了.我很好奇,如果存在的东西更像是如何try使用(resource.try(:phone_number)).
attr_accessor不适用于以下代码.错误说" undefined method 'things' for Parent:Class (NoMethodError)":
class Parent
@@things = []
attr_accessor :things
end
Parent.things << :car
p Parent.things
Run Code Online (Sandbox Code Playgroud)
但是以下代码有效
class Parent
@@things = []
def self.things
@@things
end
def things
@@things
end
end
Parent.things << :car
p Parent.things
Run Code Online (Sandbox Code Playgroud) 我知道Fixnum该类继承自Integer该类.但它们之间的实际区别是什么?是否有任何用例我们有时使用Fixnum,有时使用Integer?
我试图通过捕获异常来提高我的Ruby技能.我想知道当你有几个方法调用时,是否通常会重新提出相同类型的异常.那么,以下代码是否有意义?是否可以重新引用相同类型的异常,或者我不应该在处理方法上捕获它?
class Logo
def process
begin
@processed_logo = LogoProcessor::create_image(self.src)
rescue CustomException
raise CustomException
end
end
end
module LogoProcessor
def self.create_image
raise CustomException if some_condition
end
end
Run Code Online (Sandbox Code Playgroud) 自上次捆绑更新以来,rails控制台中的每个操作(rails服务器,rails控制台,db:migrate等)都会发出警告:
[fog][WARNING] Unable to load the 'unf' gem. Your AWS strings may not be properly encoded.
Run Code Online (Sandbox Code Playgroud)
我确定我没有更改我的application.rb文件中的AWS字符串中的任何内容:
# Amazon S3 credentials
ENV["AWS_ACCESS_KEY_ID"] = "AWS_ACCESS_KEY_ID"
ENV["AWS_SECRET_ACCESS_KEY"] = "AWS_SECRET_ACCESS_KEY"
ENV["AWS_S3_BUCKET"] = "my-bucket"
Run Code Online (Sandbox Code Playgroud)
我的gemfile中没有这个"unf"gem.我应该加吗?
我是Ruby和Rails的新手.我正在寻找一个纯粹客观的功能列表,每个功能和优点/缺点.为了保持偏好,除非您使用了所有3个系统,否则请不要回答.