Борис обнови решението на 18.10.2011 22:00 (преди около 13 години)
+class Array
+ def to_hash
+ hash = {}
+ self.each { |x| hash[x.first] = x.last }
+ return hash
+ end
+
+ def index_by(&block)
+ hash = {}
+ self.each { |x| hash[block.(x)] = x }
+ return hash
+ end
+
+ def subarray_count(array)
+ count = 0
+ return 0 if array == nil or array == []
+ self.each_cons(array.length) { |elem| count += 1 if elem == array }
+ return count
+ end
+
+ def occurences_count
+ hash = Hash.new{ 0 }
+ self.each { |elem| hash[elem] += 1 }
+ return hash
+ end
+end
- В Ruby се идентира с 2 интервала; не с 4 интервала или табове с "ширина 2"
- Пропускай експлицитния
return
, когато не е нужен; например в края на функцията, за да върнеш стойността на променливатаx
, напиши простоx
- Няма нужда от експлицитно указан
self
в случаите на викане на метод в клас, който не завършва на=
; напримерself.each ...
е по-добре само катоeach ...
-
sth.nil?
е по-добре отsth == nil
, както иsome_array.empty?
отsome_array == []
(макар варианта с метода да е една идея по-бавен, се предпочита с оглед на по-добрата четимост)