我在Clojure中有一个简单而令人沮丧的问题,我有一个函数(让我们称之为读函数),它从用户的输入中找出用户想要做的事情,然后调用另一个函数(让我们称之为动作函数).此动作函数在完成后调用读取函数,以便用户可以执行另一个任务.
现在我的问题是如果我在动作函数的代码之前放入read-function的代码,我在read-function中得到一个错误,说它不知道动作函数是什么(因为它的代码是进一步的如果我做相反的事情,我明显得到一个类似的错误,说读取功能无法解决等等.
有没有一种简单的方法来解决这个问题?
实际代码:
(defn ajout [botin]
(def botin botin)
(readCmd botin)
)
(defn readCmd [botin]
(println "Entrez une commande svp ")
(def botin botin)
(let [cmd (read-line)]
(if (.equals cmd "a") ((println "Ajout 8o") (ajout botin))
(if (.equals cmd "e") ((println "Elim 8o") (eliminer botin))
(if (.equals cmd "i") ((println "Imprim 8o") (imprimer botin))
((println "Commande invalide, nous vous rapellons que les commandes possibles sont : ") (print-les-cmd) (readCmd))))))
)
Run Code Online (Sandbox Code Playgroud)
像这样,我在ajout函数的(readCmd botin)行中得到一个错误:在这种情况下无法解析符号:readCmd
如果我以相反的顺序放置这两个函数的代码,我将得到一个错误说:无法解析符号:在此上下文中的ajout
我一直在为我公司的支持中心工作,我们需要在登录时跟踪个人用户.如果可能的话,我们也希望跟踪详细信息,例如访问的页面和在网站上花费的时间.我可以使用自定义变量跟踪有多少人登录该网站,但我无法跟踪单个用户.这是我用来尝试获取单个用户ID的代码:
$(document).ready( function() {
var welcomeEmail = document.getElementById('welcome_email').innerHTML;
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-30086012-1']);
var welcomeEmail;
if( $('#welcome_email').length > 0 ) {
//This block of logic makes sure that the welcome_email element actually exists, it will not exist if a user is not logged in yet
welcomeEmail = document.getElementById('welcome_email').innerHTML;
}
_gaq.push(['_setCustomVar',1,'UserEmail',welcomeEmail,1]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; …
Run Code Online (Sandbox Code Playgroud) 这是一个很棒的项目,但从哪里开始?
我想为自己的项目制作自己的github fork.或者为每个项目"内部"创建一个分支.
也许我还没有真正理解这种社交编码的东西 - 但我真的感觉到我对"封装"或"封装"软件框架和开发环境的过敏.
是否应该在源文件中创建一个项目,坐在one.sample
应用程序旁边?有很多目录我不知道从哪里开始.难道大多数One项目都不应该坐在clojars中供我们使用并吐出我们自己的应用模板,有点像lein noir new <appname>
吗?
任何和所有见解表示赞赏,谢谢!
我试图理解在Clojure中通过树或由Clojure列表(或其他集合类型)表示的列表进行递归的惯用方法.
我可以编写以下内容来计算平面集合中的元素(忽略它不是尾递归的事实):
(defn length
([xs]
(if (nil? (seq xs))
0
(+ 1 (length (rest xs))))))
Run Code Online (Sandbox Code Playgroud)
现在在Scheme或CL中,所有示例都只在列表上执行此操作,因此这些语言中的惯用基本案例测试将是(nil? xs)
.在Clojure中,我们希望这个函数适用于所有集合类型,惯用测试(nil? (seq xs))
,或者可能(empty? xs)
是完全不同的东西?
我想要考虑的另一种情况是树遍历,即遍历表示树的列表或向量,例如[1 2 [3 4]
.
例如,计算树中的节点:
(defn node-count [tree]
(cond (not (coll? tree)) 1
(nil? (seq tree)) 0
:else (+ (node-count (first tree)) (node-count (rest tree)))))
Run Code Online (Sandbox Code Playgroud)
这里我们(not (coll? tree))
用来检查原子,而在Scheme/CL我们用atom?
.我们还(nil? (seq tree))
用来检查空集合.最后我们使用first
和rest
将当前树解构为左分支和树的其余部分.
总而言之,Clojure中的以下形式是惯用的:
(nil? (seq xs))
测试空集合(first xs)
并(rest xs)
深入研究收藏品(not …
直到最近,我还是GoogleCode上一个开源项目的只读用户.我被邀请加入团队但是我需要将本地存储库从使用http:// url切换到更安全的https:// url,这将允许我提交.
在工作中TortoiseSVN for Windows有一个方便的"切换"功能,这将允许我更改任何本地仓库的服务器,但是这个功能似乎没有出现在我的Ubuntu 9.04桌面上的eclipse和命令行的SVN中.当然必须有办法做到这一点?
作为绝望的行为,我可以简单地将差异提取到文本,从新鲜检查新的回购,然后重新应用我的差异...但是必须有一个更优雅的方式来做到这一点?
谢谢
我真的不了解https://github.com/clojure-liberator/liberator以及它为开发人员提供的决策点列表.如何使用库的/旁边/顶部实现基本的auth/auth服务?
我一直在试用iPhone SDK中的URL方案,我已经让我的应用程序使用自定义URL方案启动,如"myap:// Dosomething",但这对我想要的并不实用.有可能以某种方式注册一个方案,允许像" http://www.mydomain.com/ " 这样的电子邮件中的链接启动我的应用程序,比如app store链接和youtube链接吗?
我正在为我的网站开发一个谷歌浏览器扩展程序.
我希望当用户点击谷歌浏览器的桌面通知时,我的网站会打开.
那么我该如何处理谷歌浏览器桌面通知点击事件?
是否有一种使用Boost获取应用程序名称的简单方法(可能带boost::program_options
?)
事情将是这样的:
有 argv[0] = "c:\foo\bar\appname.exe"
我希望有 var1 = "appname"
我在一个命名空间中有以下内容shapes
:
(derive ::rect ::shape)
(derive ::square ::rect)
Run Code Online (Sandbox Code Playgroud)
现在在shapes
命名空间中执行以下命令:
(isa? ::square ::shape)
Run Code Online (Sandbox Code Playgroud)
回报true
.但是当我在命名空间中执行以下操作时,我实际上为绘图实现了多个方法,
(isa? ::square ::shape)
Run Code Online (Sandbox Code Playgroud)
它返回false
.因此,即使我有正确的多方法调度函数,我也会收到一条错误消息"未找到调度函数".
我错过了什么吗?在一个巨大的命名空间中实现所有类型的形状对我来说似乎毫无意义.
clojure ×5
boost ×1
c++ ×1
command-line ×1
iphone ×1
liberator ×1
multimethod ×1
objective-c ×1
recursion ×1
svn ×1
url ×1
url-scheme ×1
userid ×1