Clojure: Сокращенный синтаксис создания функции
Создание функций - настолько частая операция, что в Clojure была добавлена сокращенная версия определения (с одновременным объявлением) функции с помощью defn. Возьмем для примера определение функции возведения в квадрат:
(def square (fn [n] (* n n)))А теперь посмотрим сокращенную версию этого же определения:
(defn square [n] (* n n))
(square 3) ; 9Первое что бросается в глаза — отсутствие слова fn. Вместо него, после defn указывается имя функции, после имени - список параметров. Затем идет тело функции. Объявленная выше функция возведения в квадрат принимает один аргумент — n. Пример объявления функции с двумя аргументами:
(defn sum [x y] (+ x y))
(sum 3 5) ; 8Помимо определения сигнатуры функции, мы можем тут же использовать деструктуризацию (destructuring). Пример функции суммирования, в которую передается массив из двух элементов:
(defn sum [[x y]] (+ x y))
(sum [3 5]) ; 8
(sum [10 10]) ; 20Задание
Создайте функцию с именем sum-of-squares (используя короткий синтаксис), которая находит сумму квадратов двух чисел.
(sum-of-squares 2 3) ; 13Полезное
Clojure: Сокращенный синтаксис создания функции
Создание функций - настолько частая операция, что в Clojure была добавлена сокращенная версия определения (с одновременным объявлением) функции с помощью defn. Возьмем для примера определение функции возведения в квадрат:
(def square (fn [n] (* n n)))А теперь посмотрим сокращенную версию этого же определения:
(defn square [n] (* n n))
(square 3) ; 9Первое что бросается в глаза — отсутствие слова fn. Вместо него, после defn указывается имя функции, после имени - список параметров. Затем идет тело функции. Объявленная выше функция возведения в квадрат принимает один аргумент — n. Пример объявления функции с двумя аргументами:
(defn sum [x y] (+ x y))
(sum 3 5) ; 8Помимо определения сигнатуры функции, мы можем тут же использовать деструктуризацию (destructuring). Пример функции суммирования, в которую передается массив из двух элементов:
(defn sum [[x y]] (+ x y))
(sum [3 5]) ; 8
(sum [10 10]) ; 20Задание
Создайте функцию с именем sum-of-squares (используя короткий синтаксис), которая находит сумму квадратов двух чисел.
(sum-of-squares 2 3) ; 13Полезное
Ваше упражнение проверяется по этим тестам
(ns define-fun-test
(:require [test-helper :refer [assert-solution]]
[index :refer [sum-of-squares]]))
(assert-solution [[2 3] [6 5]] [13 61] sum-of-squares)Решение учителя откроется через:
20:00
