понедельник, 11 июля 2011 г.

Поиграем со Строками

Строковые константы являются последовательностями символов между двойными или одинарными кавычками. " (т.е. две одинарные кавычки) ничего в себе не имеют; мы называем это пустой строкой. Вот программа r03strings.rb, которая представляет строки в пространстве:




  1. # r03strings.rb  
  2. =begin  
  3.   Ruby Strings  
  4.   В Ruby строки изменяющиеся 
  5. =end  

  6. # Можно использовать " или ' для Строк, но ' более предпочтительны    
  7. puts "Hello World" 
  8. puts 'Hello World'  
  9. # Конкатенация (присоединение) строк
  10. puts 'I like' + ' Ruby'  
  11. # Escape-последовательность
  12. puts 'It\'s my Ruby'  
  13. # Здесь новое, выводит строку три раза
  14. puts 'Hello' * 3  
  15. # Определяет константу  
  16. # Более подробно о константах позже, здесь:
  17. # поставить ссылку на ruby_names.html  
  18. PI = 3.1416  
  19. puts PI  

a. Если puts передает объект, это не строка, puts вызывает метод to_s этого объекта и выводит строку, возвращенную этим методом.
b. В Ruby строки изменяемы. Они могут растягиваться, сколько потребуется, без больших затрат по времени и памяти. Ruby сохраняет строку как последовательность символов.

Очень важно знать, что существует специальный вид строки, в которой используются обратные кавычки (`) или гравис, как начало или конец разделения. Например:

puts `dir` 


Командная строка вывода посылается ОСи как команда к исполнению (под виндой мы посылаем команду dir), после чего вывод команды (dir в командном окне отобразит все файлы и поддиректории в вашей папке) затем отображается puts.


На Linux и Mac вместо этого можно сделать следующее:

puts `ls`

Другой способ породить(?) отдельный процесс - это использовать системный метод Ядра(?). Метод выполняет данную ему команду в подпроцессе; он возвращает значение true, если команда была найдена и исполнена правильно. Он возвращает значение false, если команда вышла с ненулевым статусом выхода (шо за хрень?), и nil, если команда не смогла выполниться.
Помните, что вывод команды будет просто идти в том же направлении, что и вывод вашей программы.

system("tar xzf test.tgz"# => true

Комментариев нет:

Отправить комментарий