откуда x

Страницы: 1
RSS
откуда x
 
Иду по книжке иерусалимскиса "Программирование на Луа"
Поясните пожалуйста этот пример
Код
function derivative (f, delta)
   delta = delta or 1e-4
   return function (x) return (f(x + delta) - f(x))/delta end
end

c = derivative(math.sin)
print(math.cos(5.2), c(5.2))
Откуда function (x) return (f(x + delta) - f(x))/delta end берёт свой аргумент x?
http://dl4.joxi.net/drive/2018/12/28/0011/1313/742689/89/736976d5d2.pnghttp://dl4.joxi.net/drive/2018/12/28/0011/1313/742689/89/736976d5d2.png
 
 
paper writing service
write my paper

viagra generic viagra generic
viagra for sale viagra for sale
levitra 20 mg levitra 20 mg
viagra for sale viagra for sale
write my essay write my essay
custom writing custom writing
viagra generic viagra generic
essay writing service essay writing service
viagra without a doctor prescription viagra without a doctor prescription
custom writing
write my paper for me
 
write my paper
write my essay

viagra generic viagra generic
viagra for sale viagra for sale
levitra 20 mg levitra 20 mg
viagra for sale viagra for sale
write my essay write my essay
custom writing custom writing
viagra generic viagra generic
essay writing service essay writing service
viagra without a doctor prescription viagra without a doctor prescription
write my essay
write my paper for me
 
essay writing service
write my essay

viagra generic viagra generic
viagra for sale viagra for sale
levitra 20 mg levitra 20 mg
viagra for sale viagra for sale
write my essay write my essay
custom writing custom writing
viagra generic viagra generic
essay writing service essay writing service
viagra without a doctor prescription viagra without a doctor prescription
paper writing service
custom writing
 
Цитата
Let_it_go написал:
Откуда function (x) return (f(x + delta) - f(x))/delta end берёт свой аргумент x?

У Вас функция derivative возвращает функцию (в вашем примере "c" это функция) и X это параметр этой функции.
В Вашем примере X задается при вызове c(5.2)
 
Ещё один вопрос оттуда же
Код
function newCounter ()
   local i = 0
   return function () i = i + 1 return i end
end
c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
Почему второй принт выводит 2, а не 1?
Ведь во второй строчке идёт обнуление переменной i. Она не может сохранить старое значение 1 и превращается в 0. Откуда 2?
 
Потому что функция c1, которая создана вызовом newCounter(), - не простая функция, а т.н. "замыкание". Она не просто может сохранить старое значение 1, она это делает, т.к. переменная i является для этой функции внешней, и именно для этого подобные конструкции и предусмотрены. См., например: https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0­%B5_(%D0%BF%D1%80%D...
 
Цитата
Let_it_go написал:
Почему второй принт выводит 2, а не 1?
Ведь во второй строчке идёт обнуление переменной i. Она не может сохранить старое значение 1 и превращается в 0. Откуда 2?
Получается, что 1 будут выводить только такие принты, в которых будет создаваться новый экземпляр newCounter вместе с новым нулевым i:
Код
print(newCounter()()) --> 1
print(newCounter()()) --> 1



Цитата
SDL написал:
Потому что функция c1, которая создана вызовом newCounter(), - не простая функция, а т.н. "замыкание". Она не просто может сохранить старое значение 1, она это делает, т.к. переменная i является для этой функции внешней, и именно для этого подобные конструкции и предусмотрены. См., например:   https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%BC%D1%8B%D0%BA%D0%B0%D0%BD%D0%B8%D0­ ­%B5_(%D0%BF%D1%80%D...  
Прикольно) Спасибо!
Страницы: 1
Читают тему (гостей: 1)
Наверх