我想使用clojure从文件中读取前n行.这是我的代码:
(defn read-nth-line [file]
(with-open [rdr (reader file)]
(loop [line-number 0]
(when (< line-number 20)
(nth (line-seq rdr) line-number)
(recur (inc line-number))))))
Run Code Online (Sandbox Code Playgroud)
但是当我跑
user=> (read-nth-line "test.txt")
IndexOutOfBoundsException clojure.lang.RT.nthFrom (RT.java:871)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会出现这样的错误.
有一个长整数m = 38941629971148227236N.我想生成1 <e <m之间的数字e,并检查e是否满足此要求:gcd(e,m)= 1.我的方法是使用(long(rand m))随机生成e,我得到一个警告:
IllegalArgumentException Value out of range for long:
1.7166121075068025E19 clojure.lang.RT.longCast (RT.java:1254)
Run Code Online (Sandbox Code Playgroud)
我的代码是:
(defn find-e [m]
(loop [e (long (rand m))]
(if (= 1 (gcd e m)) e
(recur (long (rand m))))))
Run Code Online (Sandbox Code Playgroud)
我知道结果超出范围很长,但我不知道有没有办法解决这个问题?
我的操作系统是MacOS,我正在开发一个Android移动应用程序.我已经下载了android studio并设置了android_home环境.我已经安装了marshmallow6.0 SDK.我android avd在终端尝试并未能打开avd.
java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Label.setText(Unknown Source)
at com.android.sdkuilib.internal.widgets.AvdDetailsDialog.displayValue(AvdDetailsDialog.java:156)
at com.android.sdkuilib.internal.widgets.AvdDetailsDialog.createContents(AvdDetailsDialog.java:73)
at com.android.sdkuilib.ui.SwtBaseDialog.open(SwtBaseDialog.java:93)
at com.android.sdkuilib.internal.widgets.AvdSelector.onDetails(AvdSelector.java:964)
at com.android.sdkuilib.internal.widgets.AvdSelector.access$600(AvdSelector.java:86)
at com.android.sdkuilib.internal.widgets.AvdSelector$11.widgetDefaultSelected(AvdSelector.java:728)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.notifyListeners(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at com.android.sdkuilib.internal.repository.ui.AvdManagerWindowImpl1.open(AvdManagerWindowImpl1.java:146)
at com.android.sdkuilib.repository.AvdManagerWindow.open(AvdManagerWindow.java:94)
at com.android.sdkmanager.Main.showAvdManagerWindow(Main.java:438)
at com.android.sdkmanager.Main.doAction(Main.java:380)
at com.android.sdkmanager.Main.run(Main.java:151)
at com.android.sdkmanager.Main.main(Main.java:117)
Run Code Online (Sandbox Code Playgroud)
我不知道是什么unknow source …
我有两个序列,可以是矢量或列表.现在我想返回一个序列,其元素与两个序列不相同.
这是一个例子:
(removedupl [1 2 3 4] [2 4 5 6]) = [1 3 5 6]
(removeddpl [] [1 2 3 4]) = [1 2 3 4]
Run Code Online (Sandbox Code Playgroud)
我现在很困惑.这是我的代码:
(defn remove-dupl [seq1 seq2]
(loop [a seq1 b seq2]
(if (not= (first a) (first b))
(recur a (rest b)))))
Run Code Online (Sandbox Code Playgroud)
但我不知道接下来该做什么.
我想知道为什么在clojure的输出结尾有一个"nil".这是我的代码:
(defn foo [x &argu]
(print x &argu))
Run Code Online (Sandbox Code Playgroud)
另一个问题是"和论证"在这里意味着什么?一个可变参数或其他什么?非常感谢!
我想返回一个数字的因子,这些因素应该在给定的范围内.喜欢:
user=> (factors (range 1 10) 12)
(1 2 3 4 6)
Run Code Online (Sandbox Code Playgroud)
我写了一些代码,但它们返回true或false.我的代码是:
(defn factors [range num]
(map #(= (mod num %) 0) range))
Run Code Online (Sandbox Code Playgroud)
测试结果:
user=> (factors (range 1 10) 12)
(true true true true false true false false false)
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得数字(1 2 3 4 6)而不是真实和错误?非常感谢!
我想知道lazy-seq返回有限列表或无限列表.有一个例子,
(defn integers [n]
(cons n (lazy-seq (integers (inc n)))))
Run Code Online (Sandbox Code Playgroud)
当我跑的时候
(first integers 10)
Run Code Online (Sandbox Code Playgroud)
要么
(take 5 (integers 10))
Run Code Online (Sandbox Code Playgroud)
结果是10和(10 11 12 13 14).但是,当我跑
(integers 10)
Run Code Online (Sandbox Code Playgroud)
该过程无法打印任何内容,无法继续.有没有人可以告诉我为什么和laza-seq的用法.非常感谢!
我想知道如何同时更新两个值.例如,我想同时增加月份和减少年龄.我的代码是
user=>(def users {:month 1 :age 26})
user=>(update-in users [:month :age] inc dec)
Run Code Online (Sandbox Code Playgroud)
我知道这种语法不正确,但我该如何解决这个问题呢?我需要同时更新.因为如果我先更新月份然后更新年龄,那么当我更新第二张地图时,第一张地图将丢失.还是有其他方法可以解决这个问题吗?
我正在通过终端安装create-react-app.我检查过node.js版本是4.5.0,高于此处的要求.并且npm的版本是2.15.9.然后我输入命令npm install -g create-react-app,出现了这样的错误信息:
npm ERR! tar.unpack untar error /Users/xiufenxu/.npm/create-react-app/0.6.0/package.tgz
npm ERR! Darwin 16.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "create-react-app"
npm ERR! node v4.5.0
npm ERR! npm v2.15.9
npm ERR! path /usr/local/lib/node_modules/create-react-app
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/create-react-app'
npm ERR! at Error (native)
npm ERR! { [Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/create-react-app']
npm ERR! errno: -13,
npm ERR! code: 'EACCES', …Run Code Online (Sandbox Code Playgroud) 我想返回地图中出现的所有关键字.例如:
{:a 1 :d 4 :e 4}
Run Code Online (Sandbox Code Playgroud)
我想得到(:a:d:e).我的代码是
(get {:a 1 :d 4 :e 4} :keywords)
Run Code Online (Sandbox Code Playgroud)
它返回零.那么如何解决呢?
我想知道如何从两个序列中删除重复元素并组合两个序列.例如,
user=>(remove-dup [1 4 7 10 16] [2 7 18 4])
(1 2 10 18 16)
Run Code Online (Sandbox Code Playgroud)
我的代码是:
(defn remove-dup [l1 l2]
(let [list (concat l1 l2)]
(loop [l list res '()]
(if (>= (second (first (frequencies l))) 2)
(recur (rest l) res)
(recur (rest l) (conj res (first (first l))))))))
Run Code Online (Sandbox Code Playgroud)
但是当我运行代码时,我收到了错误消息:
IllegalArgumentException Don't know how to create ISeq from: java.lang.Long clojure.lang.RT.seqFrom (RT.java:528)
Run Code Online (Sandbox Code Playgroud)
我该如何修复此代码.谢谢!