Чтобы использовать, eruby или erb?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

5
задан Brent Chapman 16 September 2008 в 17:24
поделиться

3 ответа

Действительно не имеет значения, они - оба то же. erb является чистым рубином, eruby записан в C, таким образом, это немного быстрее.

erubis (третий) является чистым рубином, и быстрее, чем оба те упомянутые выше. Но я сомневаюсь, что скорость этого является узким местом для Вас, поэтому просто используйте erb. Это - часть Библиотеки Стандарта Ruby.

9
ответ дан 13 December 2019 в 19:39
поделиться

Eruby является внешним исполняемым файлом, в то время как erb является библиотекой в Ruby. Вы использовали бы первого, если бы Вы хотели независимую обработку своих шаблонных файлов (например, быстрая-и-грязная замена PHP), и последний, если необходимо было обработать их в контексте некоторого другого сценария Ruby. Более распространено использовать ERB просто, потому что это более гибко, но я признаю, что был виновен в баловании eruby для выполнения .rhtml файлы для быстрых небольших служебных веб-сайтов.

2
ответ дан 13 December 2019 в 19:39
поделиться

Я делаю что-то подобное использование erb, и производительность хорошо для меня.

Как Jordi сказал, хотя, это зависит, какой контекст Вы хотите выполнить это в - если бы Вы буквально собираетесь использовать шаблоны как тот, Вы перечислили, eruby, вероятно, работал бы лучше, но я предположу, что Вы на самом деле собираетесь быть передающими переменными к шаблону, в этом случае Вы хотите erb.

Только для ссылки, при использовании erb необходимо будет передать его привязка для объекта, Вы хотите взять переменные от, что-то вроде этого:

device = Device.new
device.add_interface("GigabitEthernet1/1", "10.5.16.1")
device.add_interface("GigabitEthernet1/2", "10.5.17.1")

template = File.read("/path/to/your/template.erb")
config = ERB.new(template).result(device.binding)
0
ответ дан 13 December 2019 в 19:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: