![]() |
[Ruby] - Задай вопрос, получи ответ
В этой специальной теме новички могут задавать простые вопросы по языку Ruby и всему что с ним связано.
|
ок.
буду первым. недавно начал изучение. вопрос вызвал один код Код:
class Arrayно вот если его изменить на Код:
class Array |
yield в функции inject инвокирует(вызвает исполнение) кодблока переданного функции inject.
то есть суммирование происходит по настоящему в функции inject, алсо return вызывает выход из функции а не из кодблока. поэтому то как ты переписал класс- бред. имхо. |
Я понимаю что это бред ) Просто вызвал вопрос как оно всё же работает.. и почему конкретно...
p.s. тоесть после ретурна всё прекращается? и другие элементы массива уже не трогаются? дак а если ретурн в блоке не ставить.. просто написать { |n, value| n = n + value} то это всё также не работает.. и возвращает 0 |
Цитата:
в инжекте не увеличивается n оно как пришло inject(0) , так нулем и осталось. Код:
def inject(n){ |n, value|n = n + value;} |
В Ruby есть GIL aka Global Interpreter Lock?
И если нету, то дайте пожалуйста пример элементарного многопоточного приложения ... Это просто интерес, не более того ) |
В Руби есть Global VM Lock, но появился он только в интерпретаторе начиная с версии 1.9.
и для 1.8 канонический пример (= Код:
require 'net/http' |
А что означает вот этот код?
Код:
aString = <<END_OF_STRINGособенно вот такой пример Код:
print <<-STRING1, <<-STRING2 |
Цитата:
в первом коде дано объяснение The body of the string is the input lines up to one ending with the same text that followed the '<<' то есть '<<' - метка начала строки, а то что написано за ней END_OF_STRING - метка окончания строки. Дальше по тексту A here document consists of lines in the source up to, but not including, the terminating string that you specify after the << characters. Normally, this terminator must start in the first column. However, if you put a minus sign after the << characters, you can indent the terminator. то есть метка конца строки не должна иметь индентацию, но если это нужно перед меткой надо написать "-" |
да я второй пример плохо понял.. вернее не был уверне что правильна.. а интерпретатора небыло дня три.. вот и запстил.. я надеюсь правильно понял что есть есть - то другие строки исключаются?
|
|
вместо курла намного удобнее использовать open-uri или mechanize или watir или selenium или webrat
|
Начал изучение с книжки Криса Пайна и сразу же наткнулся на грабли: как только запускаю сохраненный скрипт он так быстро выполняется в консольном окне что не видно даже результата, что делать?
|
1) скрипт в студию
2) попробую всеже быть телепатом. консоль закрывается после выполнения скрипта? нажми выполнить и набери cmd . а лучше ставль linux |
To Excalibur
Не ставь Linux, раз сидишь под Windows Чтобы окно не закрывалось используй CMD ////////////////////////////////////////// Я установил Watir. gem install watir Как его теперь полностью удалить? |
да причём тут скрипт, пусть будет просто puts 2+2
C:\ruby>test.rb так получилось, а просто двойным кликом по скрипту не как? |
Цитата:
Нет, ведь они выполняются из консоли всегда, это не самостоятельные программы. |
Так, детки, не ссоримся.
Excalibur, чтобы увидеть результат программы достаточно в конец скрипта поставить gets, тогда скрипт будет ожидать нажатия любой клавиши. superboy4, тебе гем мешает ? удалять гемы можно командой gem uninstall имя_гема |
PHP код:
помогите.. |
watir потестить не могу. потому как он для win32.
но думаю что нужно копать в сторону исполнения яваскриптов. http://justaddwater.dk/2007/11/20/how-to-run-javascript-from-watir-scripts/ |
geezer.code
что-то я запыхался, английский знаю хорошо, а понять таки немогу но тут точно через JavaScript делается.. |
geezer.code
Было бы хорошо, если бы ты помог, с php у меня нет проблем, там Curl и все дела, пересел на руби, так он уже начинает выводить из себя. |
перед использованием watir или какой другой библиотеки, попробуй сначала Net::HTTP .
Когда осовоишься пробуй уже чтонибудь. другое. зы ну нет у меня руби на винде. |
кстати, какую книгу посоветуете для изучения ruby?
|
я бы посоветовал http://www.ruby-doc.org/docs/ProgrammingRuby/
щас сам по ней изучаю.. пока почти всё понятно.. |
а что нибудь на русском есть почитать?
|
|
ещё есть в викиучебнике достаточно неплохой справочник
|
Учим английский, потом учимся программировать. (=
Приличные книги по Руби еще можно встретить на русском, а вот по рельсам - нет. Довольно слабый перевод, к тому же пока их переведут они успевают устареть. от себя советую Programming Ruby: Progmatic Programmers' Guide и Design Patterns in Ruby. |
Цитата:
|
gisTy "английский я знаю, сидеть переводить " как то не сочитается )
на самом деле сам неособо знал английский.. а когда читаешь то 1) почти всё понятно.. 2) код он и в африке код 3) если что непонятно то в соседней вкладке гугльтранслейт и он поможет.. |
и я снова задам вопрос..
вот пример из тойже книжки удваиваем слешы Код:
str = 'a\b\c'как это работает ? в моё понимании заменяем все /\\/ - бекслешы на "\\" двойные. каким образом делается подстановка? |
Может уже стоит читать книжку внимательнее??
Цитата:
|
geezer.code
я это читал) но это не объясняет причину) я понял что это изза "движка" но почему он " replace each single backslash with another single backslash" вот это хотелось бы понять) |
the regular expression engine performs another pass through the string
что в этой строке не понятно ? ) таким образом строка при таком использовании пройдет через двиг регулярок дважды. кстати чуть ниже написано , что если использовать кодблок .gsub(str){} , то прогон через двиг регулярок будет один. слешей нужно в 2 раза меньше |
При вызове контроллера получаю следующую ошибку.
invalid byte sequence in UTF-8 В чём же может быть проблема? Google ничего не знает. |
омг.... ты вообще гуглом ползовацо умеешь?
1 из первых 10 линков - http://po-ru.com/diary/fixing-invali...uby-revisited/ |
Цитата:
PHP код:
выводится ошибка invalid byte sequence in UTF-8 форма, даже не показывается... |
Ты пользуешься Руби 1.9 ?
это все еще нестабильная ветка, и многие вещи там могут не работать. Откатись на 1.8.* Эта проблема еще висит в тикетах на лайтхаузе https://rails.lighthouseapp.com/projects/8994/tickets/2476 |
Юзаю Руби 1.8
Обращаюсь к контроллёру Upload и получаю следующие ошибки, причём под Руби 1.9 они не всплывали compile error C:/Users/BitNami RubyStack projects/killerapp/app/views/upload/index.html.erb:6: unterminated string meets end of file C:/Users/BitNami RubyStack projects/killerapp/app/views/upload/index.html.erb:6: syntax error, unexpected $end, expecting ')' А вот код странички вьюшки index PHP код:
|
| Время: 09:17 |