我有以下问题:
我确实理解函数式编程语言的概念不允许不可变变量,所以经典的变量赋值和用法就像
var foo = bar();
after that in another function...
var baz = funnything(foo);
是不可能的(如果是,请纠正我,我仍在尝试了解函数式编程背后的整个想法和概念)。
我正在尝试使用 Clojure 进行一些操作,并达到了我卡住的地步:
我想获取一个网页并将 DOM 保存到一个变量中以供以后使用。程序启动,出现提示,用户可以输入他想要获取的 URL。
在获取网站的 DOM 后,他可以通过 DOM 导航,例如获取标题、所有链接或其他内容。
问题:因为我不能使用像
; More or less pseudo-code
(def page nil)
(get-url [url]
(page (browser/get url)))
(get-title
(println (html/select page [:title])))
我必须使用以下构造:
(get-title [url]
(println (html/select (browser/get url) [:title])))
由于这种构造,每当我想通过 访问网站的某个元素时get-title
,get-links
或者每当用户在命令提示符下输入其中一种方法时,我必须下载整个网页。
我在这里想念什么吗?Clojure 中有经典的分配吗?我是否做错了事,应该在动手实践和边做边学之前学习更多的函数式编程概念吗?