2014-11-18 4 views
0

Ее мой рубиновый скрипт:Компаратор Ruby <=> Vs. Java .equals; для сравнения строк

books = ["Charlie and the Chocolate Factory", "War and Peace", "Utopia", "A Brief History of Time", "A Wrinkle in Time"] 

puts books.sort! { 

    |firstBook, secondBook| 

    firstBook <=> secondBook 

} 

Я ожидал, что он будет печатать -1,0 или 1, но он печатает название книги. Как получить свое логическое значение в консоли.

Аналогично в Java мой код:

public class sampletest { 

    public static void main(String[] args) { 
     String String1 = "hello"; 
     String String2 = "Hello"; 

     System.out.println(String1.equals(String2)); 
    } 
} 

Здесь выход: True (логическое значение) Я новичок в Ruby, я не понимаю разницу между этими двумя

ответ

1

В в первом примере вы сортируете (с большим количеством сравнений, которые вы не видите). Во втором примере вы просто сравниваете. Ruby-эквивалент вашего Java-фрагмента:

string1 = "hello" 
string2 = "Hello" 
puts(string1 == string2) 
+0

@ Сравнительные сравнения, которые я не вижу, это <, = and >. Но почему я не могу видеть логическое значение в консоли так, как оно отображается в java. Как получить логическое значение в консоли и где написано для печати имени книги в консоли. Все это смущает, пожалуйста, уточните ответ. Спасибо – paul

+0

К сожалению, не могли бы вы быть яснее? Вы никогда не используете '<', '=', '>'; вы использовали один оператор '<=>', который делает что-то отличное от трех перечисленных вами. Ruby печатает имена книг, потому что вы просите об этом, вызывая 'puts' на результат' books.sort! '. Вы никогда не печатаете результат сравнений, вы печатаете массив книг. Учитывая это, почему вы ожидаете печати всего, кроме массива книг? И я показал вам, как получить логическое значение в консоли в моем ответе: напечатать результат сравнения, а не результат сортировки. – Amadan