К сожалению, эта сокращенная нотация (которая вызывает «Символ # to_proc») не имеет способа передать аргументы вызываемому методу или блоку, поэтому вы даже не можете сделать следующее:
array_of_strings.map(&:include, 'l') #=> this would fail
НО, вам повезло, потому что вам действительно не нужен этот ярлык , чтобы делать то, что вы пытаетесь сделать. Амперсанд может преобразовать Proc или Lambda в блок, и наоборот:
my_routine = Proc.new { |str| str.upcase }
%w{ one two three }.map &my_routine #=> ['ONE', 'TWO', 'THREE']
Обратите внимание на отсутствие двоеточия до my_routine
. Это связано с тем, что мы не хотим преобразовать символ :my_routine
в proc, найдя метод и вызывая .method
на нем, вместо этого мы хотим преобразовать my_routine
Proc в блок и передать его в map
.
Зная это, вы даже можете сопоставить собственный метод Ruby:
%w{ one two three }.map &method(:p)
Метод method
будет принимать метод p
и преобразовывать его в Proc, и &
преобразует его в блок, который передается в map
. В результате каждый элемент печатается. Это эквивалентно этому:
%w{ one two three }.map { |s| p s }
Если вы измените их на «пользовательские» настройки, их можно будет изменить в коде, и когда вы вызовете Save (), они будут сохранены в файле user.config в папке локальных настроек текущего пользователя. .
Очевидно, это означает, что они могут быть разными для каждого пользователя. Как правило, глобальные настройки приложения, одинаковые для всех пользователей, не изменяются в коде, потому что изменение, внесенное одним пользователем, повлияет на всех остальных (следовательно, настройки приложения доступны только для чтения).
Если вы не хотите, чтобы они для пользователей, взгляните на класс ConfigurationManager . Это позволит вам вручную читать и записывать файлы .config. Однако помните, что папка c: \ program files \ защищена, и обычные пользователи не будут иметь к ней доступа (это приведет к появлению запросов UAC или сбоям в vista / win7).
Посмотрите здесь: Рекомендации по сохранению настроек приложения в приложении Windows Forms
Класс ApplicationSettings не поддержка сохранения настроек в app.config файл. Это очень похоже на дизайн, приложения, которые работают с правильным защищенная учетная запись пользователя (подумайте о Vista UAC) не имеют доступа на запись к папку установки программы.
Вы можете бороться с системой с помощью ConfigurationManager класс. Но тривиальный обходной путь - перейти к Дизайнер настроек и измените область настройки пользователя. Если это вызывает трудности (скажем, настройка актуально для каждого пользователя), вы должны поместите вашу опцию в отдельный программа, чтобы вы могли попросить Запрос на повышение привилегий. Или отказаться с помощью параметра.