我想检查字符串是否是Rails中的所有大写字母.我该怎么做呢?
我正在编写自己的自定义复数辅助方法,我会传递像"WORD"这样的词,有时候会传递"Word" - 我想测试我的单词是否全部为大写所以我可以返回"词语" - 用大写字母"S" "最后,如果这个词是复数(与"WORD"相对).
谢谢!
所以我有这个(排序很好的)数组.
有时我需要数组中的所有元素.但有时我需要所有偶数索引的成员和所有奇数索引的成员在一起.然后,有时我需要将它分成三组,其中一组中有0,3,6等指数,然后是下一组中的1,4,7,最后是2,5,8.
这可以通过group_by索引的模数来完成.你自己看:
https://play.crystal-lang.org/#/r/4kzj
arr = ['a', 'b', 'c', 'd', 'e']
puts arr.group_by { |x| arr.index(x).not_nil! % 1 } # {0 => ['a', 'b', 'c', 'd', 'e']}
puts arr.group_by { |x| arr.index(x).not_nil! % 2 } # {0 => ['a', 'c', 'e'], 1 => ['b', 'd']}
puts arr.group_by { |x| arr.index(x).not_nil! % 3 } # {0 => ['a', 'd'], 1 => ['b', 'e'], 2 => ['c']}
Run Code Online (Sandbox Code Playgroud)
但not_nil!那里的感觉就像一个代码嗅觉/警告,有更好的方法.
我可以获取元素的索引而无需查找并处理Nil类型吗?
我相信这是一个普遍的OOP问题,但是我在使用Crystal这个问题很重要.
处理我有子类需要共享类型但该类型不是父类的情况的正确方法是什么.例如,假设我有动物:猫和狗,我也有小动物:小猫和小狗.我想小猫和小狗是他们自己的类型与他们自己的"父"方法.
class Animal
end
class Dog < Animal
end
class Cat < Animal
end
class Puppy < Dog
property? needs_milk = true
end
class Kitten < Cat
property? needs_milk = true
end
Run Code Online (Sandbox Code Playgroud)
我知道如果我需要的只是一些属性或方法,我可以通过mixin来做到这一点:
module BabyAnimal
property? needs_milk = true
end
Run Code Online (Sandbox Code Playgroud)
但对于我的实际用例,我想保证数组的所有成员"都是"BabyAnimals(因此有婴儿动物的方法和属性),即
[] of Kitten | Puppy
Run Code Online (Sandbox Code Playgroud)
所以感觉继承是唯一/正确的方法.
或者我错过了什么?
假设我有一个抽象类,它有一个非抽象的实例方法供子进行继承:
# - abstract.cr
abstract class Abstract
def foo
2
end
end
Run Code Online (Sandbox Code Playgroud)
我该怎么写这个规格?
# - abstract_spec.cr
it "returns 2 from #foo" do
Abstract.instance.foo.should eq 2 #???
end
Run Code Online (Sandbox Code Playgroud) 我正在继承一个使用config/database.yml.sqlite而config/database.yml.psql不是使用的项目config/database.yml.
为什么要这样做,我应该如何使用它?
如果我只是运行rake db:createrails正在寻找一个config/database.yml.我试过找一种方法来指定配置文件的名称,但没有运气.
我可以问那些我正在继承代码的人,但经过一些谷歌搜索后,我在其他项目中看到了这种模式,并认为如果SO有答案那就好了.