2017-02-18 45 views
-1

Я не понимаю, как Swift сравнивает строки.Сравнение строк в Swift 3 дает ложные результаты (Linux)

Swift (3.0.2) на Linux:

print("2" < "=") //returns false 

, но и другие языки, такие как Ruby:

p("2:" < "=:") #returns true 

Кажется, мы должны иметь быстрые возвращающегося верно, так как "2" идет перед «= "в порядке ASCII. Это ошибка или мне что-то не хватает?

+2

print ("2" <"=") печатает true для меня – simonWasHere

+2

Оба 'print (" 2 "<" = ")' и 'print (" 2: "<" =: ")' print "true" в Свифт. –

+0

Это о 'print' vs' p' return value? – paiv

ответ

2

Из комментариев, кажется, что вы тестируете это только на Linux. Существует открытая ошибка, как Swift обрабатывает заказ обугленного на Linux, см SR-530


Оригинальный ответ:

p возвращается в Ruby объект, переданный в качестве аргумента.

Эквивалентное сравнение будет Ruby puts vs Swift print. Оба возвращают (почти) ничего.

+0

В быстрой форме: 'let a =" 2: "<" =: "; print (a) -> false'. В ruby ​​'a =" 2: "<" =: "; puts (a) -> true'. Я не понимаю, почему swift дает false, поскольку в ASCII-порядке «2» предшествует «=». Я что-то пропустил в сравнении? Я получаю тот же странный результат в и . У меня нет другого способа попробовать. Я изучаю Свифт. – user3166747

+2

@ user3166747: Это похоже на проблему с Linux (что объясняет, почему никто не мог ее воспроизвести). Вы должны добавить к своему вопросу, что вы тестируете его в тестовой среде IBM Swift. –

+0

Welp. Существует ошибка для этого https://bugs.swift.org/browse/SR-530 Полезно знать. – paiv

 Смежные вопросы

  • Нет связанных вопросов^_^