Произведение впечатление на пример Ruby

Public Function LastData(rCol As Range) As Range    
    Set LastData = rCol.Find("*", rCol.Cells(1), , , , xlPrevious)    
End Function

Использование: ?lastdata(activecell.EntireColumn).Address

7
задан John M Gant 17 November 2009 в 19:51
поделиться

10 ответов

Я настоятельно рекомендую использовать .each , .inject и / или .collect . Например:

# Sum 1,3,5,7,9,11,13
[1,3,5,7,11,13].inject { |a,b| a+b }

или

# Print out all of the files in a directory
Dir.glob('./my_cool_directory/*').each do |file|
  puts file
end

или

# Find the length of all of the strings
["test", "hello there", "how's life today?"].collect{ |string| string.length }
5
ответ дан 6 December 2019 в 08:15
поделиться

Покажите им, как вы преобразовываете 50 уродливых строк грязного кода в 3 чистых подхода к очень легкому для понимания программному обеспечению. (Это первая строка комментария)

Не показывай, насколько ты крут с рубином. Но как они будут крутыми, если будут использовать рубин :)

6
ответ дан 6 December 2019 в 08:15
поделиться

Я впечатлен тем, что можно сделать с помощью tweetstream. Так легко отслеживать популярные темы.

установите с помощью:

gem sources -a http://gems.github.com
gem install intridea-tweetstream

Вот демонстрационный код:

#!/usr/local/bin/ruby 

if ARGV.size==1
  keyword = ARGV.shift
else
  puts 'tweetmon usage: tweetmon <keyword>'
  exit 1
end

require 'yaml'
require 'rubygems'
require 'tweetstream'

config = YAML::load(File.open(File.expand_path('~/.twitter')))
user =config['username']
password =config['password']

TweetStream::Client.new(user,password).track(keyword) do |status|  
  puts "[#{status.created_at}-#{status.user.screen_name}] #{status.text}"
end  

Вам нужно создать файл с именем .twitter в корневом каталоге вашего пользователя в форме:

username: my-twitter-username
password: my-twitter-password

Обратите внимание, как ruby читает эту конфигурацию всего в 4 строках (включая yaml require.)

Вы запускаете его так:

ruby tweetmon.rb keyword-to-be-monitored

(Помните, что вам нужно экранировать # на mac / linux, например: tweetmon.rb \ #devdays )

Из такого простого фрагмента вы можете делать такие вещи, как подсчитывать, сколько раз каждый человек вносит свой вклад, записывать сегменты потока твитов в файл и т. Д. с этой отправной точки ...

4
ответ дан 6 December 2019 в 08:15
поделиться
irb(main):007:0> 2**2048
=> 32317006071311007300714876688669951960444102669715484032130345427524655138867
89089319720141152291346368871796092189801949411955915049092109508815238644828312
06308773673009960917501977503896521067960576383840675682767922186426197561618380
94338476170470581645852036305042887575891541065808607552399123930385521914333389
66834242068497478656456949485617603532632205807780565933102619270846031415025859
28641771167259436037184618573575983511523016459044036976132332872312271256847108
20209725157101726931323469678542580656697935045997268352998638215525166389437335
543602135433229604645318478604952148193555853611059596230656

попробуйте 2 ** 20000 или любое другое нелепое большое число.

2
ответ дан 6 December 2019 в 08:15
поделиться

Если вы знакомы с Java, создайте список строк, отсортируйте его с помощью собственного компаратора (длина строки) и распечатайте список. Сделайте то же самое в Ruby ...

2
ответ дан 6 December 2019 в 08:15
поделиться

Вы должны полностью показать им массив Двемти, он очень хорошо говорит о силе, заключенной в метапрограммировании в Ruby.

Найдите здесь!

1
ответ дан 6 December 2019 в 08:15
поделиться

Ruby мне нравится, потому что он часто позволяет мне делать то, что я хочу, вместо того, чтобы тратить много времени на «настройку» решения. Итак, несколько примеров:

Суммируйте неотрицательные числа в массиве [-1, 3, -10, 0, 5, 8, 16, -3.14159]

[-1, 3, -10, 0, 5, 8, 16, -3.14159].select { |x| x > 0 }.inject { |acc, x| acc + x }

По сравнению с формой, общей для других языков:

sum = 0;
foreach (x in [-1, 3, -10, 0, 5, 8, 16, -3.14159]) {
  if(x > 0) sum += x;
}
return x;

Простая обработка исключений

x = method_that_might_raise_exception() rescue nil

По сравнению с:

try {
  x = method_that_might_raise_exception()
} catch (Exception) {
  x = nil
}

Конечно, вы можете делать больше с генерируемыми исключениями, и Ruby позволяет вам, но когда вы хотите, чтобы все было просто, Ruby не стоит в

Открытые классы Ruby - изящная тема, хотя ими можно злоупотреблять:

class Array
  def sum_of_squares
    map { |x| x * x }.inject { |acc, x| acc + x }
  end
end

[1, 3, 5, 9].sum_of_squares

Есть также богатая тема метапрограммирования, но это может быть слишком много для введения в Ruby? Я надеюсь, что кое-что здесь было полезно для вас, и я хотел бы поддержать мнение графика.

1
ответ дан 6 December 2019 в 08:15
поделиться

Вот несколько классных примеров рубинов, которые я скомпилировал за эти годы:

1
ответ дан 6 December 2019 в 08:15
поделиться

Я бы показал, насколько просто создавать красивые dsl - в частности, method_missing действительно прост для понимания, но очень мощный и позволяет делать действительно классные вещи.

0
ответ дан 6 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: