The Crystal programming language | http://crystal-lang.org | Fund Crystal's development: http://is.gd/X7PRtI | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/
x
, @x
, or self.x
to refer to an instance variable in an instance method? I seem to be able to use all 3 with the same effect.
@x
is the only "safe" thing that will always resolve to an ivar, even if there is another local var or method named x...so is there no reason to use the other 2, other than to make things less explicit and confusing? :)
self.x
is if you have customer logic in the getter and/or are using a lazily initialized ivar
var x = [1, 2, 3, 4, 5]
var y = [6, 7, 8, 9, 10]
x[1..2] = y[1..2] # x => [1, 7, 8, 4, 5]
sign
and fract
:sign(42.0) # 1.0
sign (-42.0) # -1.0
sign (0.0) # 0.0
fract(42.123) # 0.123
value - (value.floor)
probably?
clone
or dup
? In this case there is nothing to traverse for a deep copy, but I see some projects use clone
in this case, while others use dup
, so I'm not sure if there is a consensus.
scope.yml
having the properties roots
, paths
, etc. in a Scope
class, I'd like to avoid flow control to check the filters as scope.roots
, scope.paths
, to something like scope.filters
having their own class
Scope
with property roots
and property paths
to pull the data from the file, but what I want when creating the instance is more something like a property filters
doing when having roots
keys, Root.new(value)
, etc.
scope.filters.all? { |filter| filter.evaluate_with(path) }