Здравейте, имам проблем:
"За да изпълните примерните тестове, трябва да си качите rspec. За целта, просто изпълнете:
$ gem install rspec
"
ОК - слушам и изпълнявам: link
???
Здравейте, имам проблем:
"За да изпълните примерните тестове, трябва да си качите rspec. За целта, просто изпълнете:
$ gem install rspec
"
ОК - слушам и изпълнявам: link
???
Изпълни го в конзолата, а не в Ruby.
Gem е изпълним файл на операционната ти система, а не функция в Ruby.
Плюс, сложи си снимка. Рядко помагаме на хора без снимки :)
Конзола - конзола: link
P.S: Благодаря за бързия отговор.
Пробвай да ръннеш командата там където ти е инсталирано рубито на Windows. Нещо от сорта C:\ruby или C:\ruby\bin.
Да, този път стана НЕЩО: link
Благодаря.
Ами, инсталирал си го вече. Би трябвало като напишеш rspec path/to/file_spec.rb
да пусне теста. По принцип инсталирането на gem-ове става сравнително бавно, така че това не трябва да те притеснява.
@Николай (и всички останали на Windows) — имате две опции. Едната е да си промените променливата от обкръжението (environment variable), наречена PATH
така, че да съдържа и Drive:\Path to your Ruby\Ruby193\bin
. Така ще може да изпълнявате команди като gem
, rspec
и прочее където и да се намирате по файловото дърво.
Тъй като RubyInstaller-ът върви с MinGW, ако не се лъжа (minimalist GNU for Windows), по-добре издирете къде е конзолата, която идва с него и ползвайте нея. Далеч, далеч по-функционална е от, хм, ограничения MS Windows Command Prompt.
https://docs.google.com/open?id=0B6tybKFr7XAgdVVLQ0F0VFQ5Qlk
Някой да има идея какво правя грешно ? (да, solution.rb e на desktop-a)
@Светлана
Като за начало му липсва sample_rspec.rb
като гледам. Така ли си кръстила примерния тест и сложила ли си го на desktop и него (и бтв - това ти е първата грешка ;)) ?
Mерси.
Здравейте,някой може ли да ми помогне да разбера как се прилага някакъв дефиниран от нас метод(става дума за лекцията свързана със "Списъци,хешове функции").
Използвам Notepad++ за редактор и след като напиша кода в него,примерно това което е на лекцията:
def factorial(n)
unless n == 1
factorial(n - 1) * n
else
1
end
end
и след това файлът го запазвам в директорията ,в която се намира ruby C:...\Ruby193\bin . След това отварям "Start Command Prompt with Ruby" и зареждам съответно файла new6.rb . Дотук Ок,но как примерно аз мога да използвам самата функция,примерно от някакъв входен поток(доколкото разбрах с gets()) да взема резултат и да го изчисля чрез тази дефинирана функция?
Пробвам така
def factorial(n)
unless n == 1
factorial(n - 1) * n
else
1
end
end
print ("Enter a number")
number=gets()
puts factorianl(number)
с всякакви разновидности на последните 3 реда ,но ми дава грешки.На тоя код грешката е Undefined method "factorial" for main:Object(NoMethodError)
factorial(Integer(number))
.@Кристиан, ако си оправил проблемите с PATH, ти остава още един малък проблем: IO#gets
връща String
(или nil
, при край на файл), а за factorial
ти трябва Fixnum
.
Затова можеш да ползваш String#to_i
:
number = gets().to_i
P.S. Малко съм закъснял с отговора.
Не знаех,че като четем число го прави на String.Аз предполагах,че има нещо такова,защото ми даваше и грешки от вида:
"facrorial" undefined method '-' for "3\n":String
Но с това factorial(Integer(number)) преобразуване се получи :) Благодаря ти!
Сигурно не съм прочел инструкциите правилно, та отново имам проблем:
Може ли малко помощ, моля?
P.S. Може би в този форум inline-ването на снимки е проява на лош "нетикет".
P.P.S. Разреших си проблема.
А би ли споделил как оправи проблема?
Виж другата тема.
Здравейте имам проблем :
* def input_data STDOUT.flush tries = gets.chomp end strings=[]; tries=input_data until (tries =~ /^[1-9]$/) tries=tries.to_i strings<<input_data until (strings.count == tries) *\
Дава ми грешка : input_data': undefined method `chomp' for nil:NilClass (NoMethodError)
Някой може ли да ми каже, защо и как да оправя това.
Здравей,
Първо, моля те, прочети какъв е синтаксисът на Markdown за блокове от код.
Второ, ако кодът ти е
def input_data
STDOUT.flush
tries = gets.chomp # <---- Това присвояване предизвиква Warning,
# освен това, ако не използваш STDIN.gets,
# ако има подадено файлово име като аргумент,
# Ruby прочита първата линия от файла.
end
strings=[]; # <--- Тук нямаш нужда от ; и имаш нужда от интервали около
# оператора = тук и навсякъде надолу
tries=input_data until (tries =~ /[1-9]$/)
tries=tries.to_i
strings<<input_data until (strings.count == tries)
# ^--- задължително интервали около този оператор
то тогава не мога да репродуцирам проблема ти :/.
[ignisf@tealmonkey ~]$ ruby test.rb
3
baba
dqdo
123
["baba", "dqdo", "123"]
[ignisf@tealmonkey ~]$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
[ignisf@tealmonkey ~]$ uname -a
Linux tealmonkey 3.6.7-1-ARCH #1 SMP PREEMPT Sun Nov 18 10:11:22 CET 2012 x86_64 GNU/Linux
[ignisf@tealmonkey ~]$
Трето, силно ти препоръчвам да прочетеш https://github.com/fmi/ruby-style-guide/ отново.
Разбрах какъв ми е проблемът. По незнайни причини gets връща NIL. Сложих му едно ||= ''. И на трезва глава се мисли по-добре :D
Трябва да сте влезли в системата, за да може да отговаряте на теми.