» Главная
eXcode.ru » Статьи » Ruby
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 15







Фишки в ruby




Эта глава посвящена некоторым практическим приемам.
Разделители выражений

В некоторых языках необходимо соблюдение некоторых правил пунктуации; часто используется точка с запятой (;), для обозначения окончания выражения в программе. Ruby вместо этого следует соглашениям, используемым в шеллах, таких как sh или csh. Множественные выражения в одной строке должны разделяться точкой с запятой, но это не обязательно в конце строки; перевод строки трактуется как точка с запятой. Если линия заканчивается обратным слэшем (\), перевод строки игнорируется; это позволяет разнести длинный оператор на несколько строк.
Комментарии

Зачем писать комментарии? Хотя хорошо написанный код имеет тенденцию к самодокументированию, часто бывает полезно делать заметки на полях; будет ошибкой думать, что другие смогут немедленно сказать что делает Ваш код лишь мельком взглянув на него (как это можете Вы). Кроме того, вы можете оказаться в роли этого другого человека всего лишь несколько дней спустя; кто из нас не возвращался спустя некоторое время к старой программе чтобы что-то дописать или исправить ее и не говорил "Я знаю, что это писал я. Но, черт побери, что вот это значит?"

Некоторые опытные программисты достаточно правильно заметят, что противоречивые и устаревшие комментарии могут быть хуже, чем их отсутствие. Безусловно, комментарии не могут быть заменой для читабельного кода; если Ваш код неясен, вероятно, он также содержит ошибки. Может оказаться, что, пока Вы изучаете Ruby, Вы больше испытываете нужду в комментариях, а затем все меньше и меньше, по мере того, как Вы учитесь все лучше выражать свои идеи с помощью простого, элегантного, читабельного кода.

Ruby следует общепринятому в скриптах правилу, по которому начало комментария выделяется знаком фунта (#). Все, что следует за ним, интерпретатором игнорируется.

Также, для облегчения написания больших комментариев, интерпретатор Ruby также игнорирует все, что заключено между строкой, начинающейся с "=begin" и заканчивающейся на "=end".



#!/usr/local/bin/ruby



=begin

**********************************************************************

This is a comment block, something you write for the benefit of

human readers (including yourself). The interpreter ignores it.

There is no need for a '#' at the start of every line.

**********************************************************************

=end

Упорядочиваем код

Интерпретатор Ruby обрабатывает код по мере его чтения. Нет ничего похожего на фазу компиляции; если что-то еще не было прочитано, значит, это просто неопределено.



# this results in an "undefined method" error:



print successor(3),"\n"



def successor(x)

x + 1

end

Это не заставляет Вас, как может показаться на первый взгляд, располагать код в стиле "сверху-вниз". Когда интерпретатор натыкается на определение метода, он может благополучно проглотить неопределенные ссылки, но к тому времени, когда метод будет вызван, все они должны быть определены:



# Conversion of fahrenheit to celsius, broken

# down into two steps.



def f_to_c(f)

scale (f - 32.0) # This is a forward reference, but it's okay.

end



def scale(x)

x * 5.0 / 9.0

end



printf "%.1f is a comfortable temperature.\n", f_to_c( 72.3 )

Хотя это может показаться менее удобным, чем то, к чему Вы, может быть, привыкли в Perl или Java, это накладывает меньшие ограничения, чем программирование на С без прототипов (что вынуждает Вас постоянно поддерживать частичную упорядоченность ссылок). Размещение кода верхнего уровня внизу исходника работает всегда. Но даже это не так досадно, как может сперва показаться. Разумный и безболезненный способ обеспечить нужное Вам поведение - определить функцию main в начале файла, а затем вызвать ее снизу.



#!/usr/local/bin/ruby



def main

# Put your top level code here...

end



# ... put all your support code here, organized as you see fit ...



main # ... and start execution here.

Также может помочь то, что в Ruby есть утилиты, разбивающие сложную программу на читабельные, с возможностью повторного использования, логически взаимосвязанные куски. Мы уже встречались с использованием include для доступа к модулям. Вы также сочтете полезным использование средств load и require. load работает как если бы файл, на который он ссылается, был скопирован и помещен в текст программы вместо него (несто похожее на директиву препроцессора #include в C). require - несколько более сложная вещь, код загружается только один раз и только тогда, когда он реально нужен. Есть и другие отличия между load и require; их можно посмотреть в справочном руководстве или в FAQ.
Се ля ви...

Этого тьюториала должно быть достаточно, чтобы помочь вам начать писать программы на Ruby. Если возникают вопросы, Вы всегда можете порыться в справочном руководстве чтобы "углубить и расширить" ;-) свои познания . FAQ и справочник по библиотеке также являются важными ресурсами.

Удачи, и счастливого кодирования!

Источник: www.opennet.ru
К началу статьи





Добавил: MadvEXДата публикации: 2007-10-27 09:56:10
Рейтинг статьи:3.00 [Голосов 5]Кол-во просмотров: 2836

Комментарии читателей

Всего комментариев: 0
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Как вы относитесь к рекламе на сайтах.
Отрицательно, терпеть ее не могу!
46% (95)
С пониманием
25% (51)
Пусть будет, если только по делу
15% (32)
Она мне безразлична!
11% (23)
Я ее обожаю!
3% (6)

Проголосовало: 208
- Вот ты мне скажи, почему когда заходишь на иностранный сайт, то в основном реклама на продукцию или услуги, а когда заходишь на русские сайты, то обязательно на эротику или порнуху, в России что? Все озабоченные? Голых баб сроду не видели?
- Да нет, это просто потому, что бабы - это единственный продукт, который делают в России, и иногда даже очень удачно.
Рейтинг: 0/10 (0)
Посмотреть все анекдоты

 
eXcode.ru » Статьи » Ruby