我不明白如何实现这个gem

时间:2016-12-06 01:31:12

标签: ruby

我对ruby很新,在我的第一个项目上工作,我要做的一件事就是将HSL颜色值转换为RGB。我找到了一个名为'Color'的宝石,我已经安装并阅读了文档,但我无法弄清楚如何实际实现代码。

到目前为止,我在'h','s'和'l'中存储的值为0到360之间的整数,而0到100之间的小数表示s和l的百分比。

文档说,如果我理解正确,我需要首先使用#initialize构造函数使用我的变量作为值,但是当我复制提供的语法并尝试将其写入时,它不起作用。我不确定我应该如何设置它,谷歌的最后一小时没有给出任何明确的答案。 #也让我感到困惑,每当我输入它时,它就会在注释后的那一行上生成所有内容。

我还不清楚这是否将s和l值存储为0到1之间的小数,我理解这是#to_rgb方法所需要的。我可以在初始化之前将它们除以100,但该步骤的文档表明它们应该从0到100。

我知道这些都是非常粗鲁的问题,但我是新手,仍然试图绕过所有的语法。我很感激任何时候投诉,谢谢!

编辑:不知道它要求我做什么,但这里有一些代码。我不明白我应该把initilalize放在哪里,或者那个#应该在那里,因为它在ruby中发表评论。当我把它放在没有任何事情发生,因为这是一个评论。我尝试将变量名称放在它之前,如“hsl_init #initialize(...)”,然后我得到:

未定义的局部变量或方法`hsl_init'for main:Object(NameError)

hsl_init#initialize(h, s, l, radix1 = 360.0, radix2 = 100.0, &block)

1 个答案:

答案 0 :(得分:2)

gem的文档对于Ruby新手来说并不友好。但是,对于知道如何阅读它的人来说,测试和文档非常完整。

以下是从the tests

中提取的示例
require 'color'

# make some instances of the different classes
hsl_teal = Color::HSL.new(180, 50, 50)
rgb_pink = Color::RGB.new(255, 127, 127)

# convert between HSL/RGB
rgb_teal = hsl_teal.to_rgb
hsl_pink = rgb_pink.to_hsl

# or display as text
puts rgb_teal.html       # prints HTML-suitable RGB hex values
puts hsl_white.css_rgba  # prints CSS-suitable RGBA values

说明

#登录文档

#符号是实际Ruby代码中的注释字符,是的,但它在实际代码之外还有其他含义 - 也就是说,在文档和Stack Overflow答案等地方。

当有人写SomeClass#some_method时,您可以将其读作"类some_method"的实例上名为SomeClass的方法。人们使用的另一个短语是在some_method上调用SomeClass 实例方法

同样,当文档谈到#my_method时,它引用了一个名为my_method的实例方法。通常很清楚你正在谈论哪个课程 - 如果你正在阅读Color::HSL的文档,那么#to_rgb可能意味着Color::HS#to_rgb

"构造函数"方法#initialize

#initialize方法有点特别,因为您通常不会直接调用它。相反,您调用.new(名为new类方法),然后分配新对象,然后在该新对象上运行#initialize

从技术上讲,这不是一个构造函数,而是一个初始化程序,但这种区别通常不会产生影响。

饱和度和亮度的小数

根据文档,饱和度和亮度的默认基数(HSL的S和L)为100. Color gem将除以基数,因此S值为50,默认基数为100的一半 - 饱和。如果你想使用不同的比例,你会传递一个不同的基数(如1.0)。