Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
pos2 = str.index("bert") # 2
pos3 = str.index(/in/) # 8
pos4 = str.index(?W) # nil
pos5 = str.index("bart") # nil
pos6 = str.index(/Wein/) # nil
Метод
rindex
str = "Albert Einstein"
pos1 = str.rindex(?E) # 7
pos2 = str.rindex("bert") # 2
pos3 = str.rindex(/in/) # 13 (найдено самое правое соответствие)
pos4 = str.rindex(?W) # nil
pos5 = str.rindex("bart") # nil
pos6 = str.rindex(/wein/) # nil
Метод
include?
str1 = "mathematics"
flag1 = str1.include? ?e # true
flag2 = str1.include? "math" # true
str2 = "Daylight Saving Time"
flag3 = str2.include? ?s # false
flag4 = str2.include? "Savings" # false
Метод
scan
str1 = "abracadabra"
sub1 = str1.scan(/а./)
# sub1 теперь равно ["ab","ас","ad","ab"]
str2 = "Acapulco, Mexico"
sub2 = str2.scan(/(.)(c.)/)
# sub2 теперь равно [ ["A","ca"], ["l","со"], ["i","со"] ]
Если при вызове задан блок, то метод поочередно передает этому блоку найденные значения:
str3 = "Kobayashi"
str3.scan(/["aeiou]+[aeiou]/) do |x|
print "Слог: #{x}n" end
Этот код выводит такой результат:
Слог: Ko
Слог: ba
Слог: уа
Слог: shi
2.15. Преобразование символов в коды ASCII и обратно
В Ruby символ представляется целым числом. Это поведение изменится в версии 2.0, а возможно и раньше. В будущем предполагается хранить символы в виде односимвольных строк.
str = "Martin"
print str[0] # 77
Если в конец строки дописывается объект типа
Fixnum
str2 = str << 111 # "Martino"
2.16. Явные и неявные преобразования
На первый взгляд, методы
to_s
to_str
Но есть и различия. Во-первых, любой объект в принципе можно как-то преобразовать в строку, поэтому почти все системные классы обладают методом
to_s
to_str
Как правило, метод
to_str
to_s
to_str
Я уже сказал, что ни в одном системном классе не определен метод
to_str
to_str
Первое, что приходит на ум, — подкласс класса
String
String
to_str
А вот пример из реальной жизни. Класс
Pathname
String
require 'pathname'
path = Pathname.new("/tmp/myfile")
name = path.to_s # "/tmp/myfile"
name = path.to_str # "/tmp/myfile" (Ну и что?)
# Вот где это оказывается полезно...
heading = "Имя файла равно " + path
puts heading# " Имя файла равно /tmp/myfile"
В этом фрагменте мы просто дописали путь в конец обычной строки
"Имя файла равно"
+
Pathname
to_str
Pathname
String
На практике методы
to_s
to_str
Метод
puts
to_s
class Helium