Вот интересное и практическое использование currying в JavaScript, которое использует замыкания :
function converter(toUnit, factor, offset, input) { offset = offset || 0; return [((offset + input) * factor).toFixed(2), toUnit].join(" "); } var milesToKm = converter.curry('km', 1.60936, undefined); var poundsToKg = converter.curry('kg', 0.45460, undefined); var farenheitToCelsius = converter.curry('degrees C', 0.5556, -32); milesToKm(10); // returns "16.09 km" poundsToKg(2.5); // returns "1.14 kg" farenheitToCelsius(98); // returns "36.67 degrees C"
Это зависит от расширения
curry
Function
, хотя, как вы видите, он использует толькоapply
(ничего необычного):Function.prototype.curry = function() { if (arguments.length < 1) { return this; //nothing to curry with - return function } var __method = this; var args = toArray(arguments); return function() { return __method.apply(this, args.concat([].slice.apply(null, arguments))); } }
Как соответствующие документы говорят (в разделе 2. Включение поддержки внешнего ключа):
Предполагая, что библиотека скомпилирована с ограничениями внешнего ключа, она все равно должна быть включенным приложением во время выполнения, используя команду PRAGMA foreign_keys. Например:
sqlite> PRAGMA foreign_keys = ON;
Ограничения внешнего ключа по умолчанию отключены (для обратной совместимости), поэтому их необходимо активировать отдельно для каждого подключения к базе данных отдельно.
blockquote>Вы использовали это
PRAGMA
в соответствующем соединении? (Предполагая, как говорят документы, что sqlite скомпилирован соответствующим образом, а также версия с достаточно недавним выпуском, чтобы, конечно, обеспечить принудительное ограничение внешнего ключа).
Вы также можете включить поддержку внешнего ключа через встраивание в строку соединения:
foreign keys=True
Пример:
"Data Source={DatabaseFullFilePath};Version=3;foreign keys=True;datetimeformat=CurrentCulture"