В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
class A
private
def my_private_method
puts 'private method called'
end
end
a = A.new
a.my_private_method # Raises exception saying private method was called
a.send :my_private_method # Calls my_private_method and prints private method called'
Я считаю это полезным в некоторых скриптах. Это позволяет напрямую использовать переменные среды, например, в сценариях оболочки и Makefile. Переменные среды используются как резерв для неопределенных констант Ruby.
>> class <<Object
>> alias :old_const_missing :const_missing
>> def const_missing(sym)
>> ENV[sym.to_s] || old_const_missing(sym)
>> end
>> end
=> nil
>> puts SHELL
/bin/zsh
=> nil
>> TERM == 'xterm'
=> true
Совет Джеймса А. Розена крут ([*пункты]. Каждый), но я нахожу, что он уничтожает хэши:
irb(main):001:0> h = {:name => "Bob"}
=> {:name=>"Bob"}
irb(main):002:0> [*h]
=> [[:name, "Bob"]]
Я предпочитаю такой способ работы со случаем, когда я принимаю список вещей для обработки, но снисходителен и позволяю вызывающему абоненту предоставить один:
irb(main):003:0> h = {:name => "Bob"}
=> {:name=>"Bob"}
irb(main):004:0> [h].flatten
=> [{:name=>"Bob"}]
Это можно комбинировать с сигнатурой метода, как это мило:
def process(*entries)
[entries].flatten.each do |e|
# do something with e
end
end
Мне просто нравится ключевое слово rescue вот так:
РЕДАКТИРОВАННЫЙ ПРИМЕР:
@user #=> nil (but I did't know)
@user.name rescue "Unknown"
link_to( d.user.name, url_user( d.user.id, d.user.name)) rescue 'Account removed'
Это позволяет избежать поломки моего приложения и намного лучше, чем функция, выпущенная в Rails .try()
@user #=> nil (but I did't know)
@user.name rescue "Unknown"
Я фанат:
%w{An Array of strings} #=> ["An", "Array", "of", "Strings"]
Забавно, как часто это полезно.
each_with_index метод для любого перечисляемого объекта (массив, хэш и т. Д.) Возможно?
myarray = ["la", "li", "lu"]
myarray.each_with_index{|v,idx| puts "#{idx} -> #{v}"}
#result:
#0 -> la
#1 -> li
#2 -> lu
Возможно, он более известен, чем другие ответы, но не так хорошо известен всем программистам на Ruby :)