И если бы Вы просто хотите создать ограничение самостоятельно, можно использовать ALTER TABLE
alter table MyTable
add constraint MyTable_MyColumn_FK FOREIGN KEY ( MyColumn ) references MyOtherTable(PKColumn)
, который я не рекомендовал бы синтаксису, упомянутому Sara Chipps для встроенного создания, просто потому что я скорее назову свои собственные ограничения.
AFAIK Это потому, что Ruby не позволяет определить метод ()
для объекта. Причина, по которой она не позволяет определить метод () [)
, вероятно, связано с тем, что скобки являются необязательными в вызовах метода.
И за то, что это стоит, вот взлом, чтобы позволить вам вызвать лямбдас, используя ()
http://github.com/coderrrr/parentcesis_hacks/blob/master/lib/lambda.rb
Ruby в основном на 100% объектно-ориентирован, но иногда он пытается скрыть этот факт для ... удобства? Знакомство?
В основном функции, определенные «на верхнем уровне», в действительности определяются как методы глобального объекта. Чтобы это работало, вызов без спецификатора действительно преобразуется в вызов метода с этим именем для указанного глобального объекта. Этот стиль делает вещи более скриптовыми. Ruby пытается сделать это в вашем последнем примере.
Первые два примера разбираются нормально, потому что Ruby знает, что вы пытаетесь получить доступ к методам объекта proc - помните, что даже []
- это просто метод, который вы можете определить. Точка с явной точкой также работает, потому что точка означает «отправить это сообщение этому объекту» (в данном случае a
).
Я знаю, что это ничего не «решает», но я надеюсь, что это немного поможет.