我想在Clojure中实现这个小代码,但我很挣扎:
struct mystruct {
int id;
int price;
};
mystruct mydata[10];
for (int i=0; i<10; i++) {
myfunction(mydata[i].id, mydata[i].price);
//other things...
}
Run Code Online (Sandbox Code Playgroud)
我是Clojure的初学者,这对我来说真的很复杂,但是我真的很想学习,因为我知道Clojure有很大的优势,比如使用refs ......
如果有人能帮助我,我真的很感激.谢谢!!
我在制作嵌套的Observable调用时遇到了一些麻烦.我的意思是调用一个http服务来检索用户,然后从用户获取id以进行另一个http调用,最后在屏幕上呈现结果.
1)HTTP GET 1:获取用户
2)HTTP GET 2:获取用户的首选项,将唯一标识符作为参数传递
这转换为组件中的以下代码Blah.ts:
版本1 - 此代码不显示任何内容
ngOnInit() {
this.userService.getUser()
.flatMap(u => {
this.user = u; // save the user
return Observable.of(u); // pass on the Observable
})
.flatMap(u => this.userService.getPreferences(this.user.username)) // get the preferences for this user
.map(p => {
this.preferences = p; // save the preferences
});
}
Run Code Online (Sandbox Code Playgroud)
版本2 - 此代码有效,但对我来说似乎是错误的方法:
this.userService.getUser().subscribe(u => {
this.user = u;
this.userService.getPreferences(this.user.username).subscribe(prefs => {
this.preferences = prefs;
});
});
Run Code Online (Sandbox Code Playgroud)
这是模板:
<h3>User</h3>
<div class="row col-md-12">
<div class="col-md-6"> …Run Code Online (Sandbox Code Playgroud) 我正在使用sketch.js插件在HTML5画布上绘图.虽然它在台式计算机上运行良好,但它似乎在移动浏览器上存在一些问题.
问题是,如果我绘制2个不同的形状,一旦我触摸它,画布将重置为空白.
为了完全清楚,我将制作和示例:绘制数字'12'将首先绘制'1'然后当我开始绘制'2'时画布将清除并且仅保留数字'2'...
<!-- CANVAS -->
<canvas id="canvas1" style="width:100%; background:white; height:150px;"></canvas>
<script type="text/javascript">
$(function () {
$('#canvas1').sketch();
});
</script>
Run Code Online (Sandbox Code Playgroud)
就是这个.我想知道是否有一些解决方法来保持各种图纸的历史.我对任何建议持开放态度,或者知道您是否发现了类似的问题.
当我执行如下循环时,我有一个小代码,根本不想工作:
...
(defn my-function []
(println "Hi") ;this works
(for [i (range 10)] (println "Hello") ;this doesn't work!
)
)
...
Run Code Online (Sandbox Code Playgroud)
我无法理解问题是什么,循环内的所有代码似乎都被忽略了,而"Hi"打印没有问题
我通过GUI按钮事件调用'myfunction',如下所示:
...
(.append output-text (with-out-str (time (my-function))))
...
Run Code Online (Sandbox Code Playgroud)
您是否认为问题可能存在于GUI或我遗漏的其他内容中?有什么建议吗?我知道我应该使用REPL来测试它,但它不适用于Netbeans ......:S
非常感谢您的帮助.
我想使用Java方法:R untime.getRuntime().availableProcessors()并将结果保存在整数变量中.
所以在Clojure中我这样做了:
(def n-cpu ((.availableProcessors (Runtime/getRuntime)) ))
Run Code Online (Sandbox Code Playgroud)
还有这个:
(def n-cpu (Integer/parseInt ((.availableProcessors (Runtime/getRuntime)) )))
Run Code Online (Sandbox Code Playgroud)
但没有工作.
有什么建议?
嗨,我刚开始使用Clojure,我无法设法反转整数向量.
;generate a vector of random integers
(defn generate-rands
[x]
(vector (take x (repeatedly #(rand-int 100))))
)
;vector of integers
(def my-vector (generate-rands 10))
;reverse the vector of integers
(def my-vector-reversed (reverse my-vector))
;main
(defn main-app
[]
(println "My Vector: \t\t\t" my-vector)
(println "My Vector Reversed: \t" my-vector-reversed))
Run Code Online (Sandbox Code Playgroud)
输出是
=> (main-app)
My Vector: [(14 49 29 3 66 7 60 60 34 19)]
My Vector Reversed: [((14 49 29 3 66 7 60 60 34 19))]
nil
#'startingclojure.app/main-app
=> (vector? …Run Code Online (Sandbox Code Playgroud) 我正在尝试 Java 9 中的一些新功能。所以我组织了一个测试,让发布者以给定的速率发出数字。我还实现了一个订阅者来收听这些出版物并将它们打印到控制台。
虽然我可能不完全理解如何使用这个 Api,因为该onNext()方法不打印任何内容,getLastItem()只返回 0。
唯一似乎有效的部分是onSubscribe()正确初始化lastItem变量的部分。
@Test
public void testReactiveStreams(){
//Create Publisher
SubmissionPublisher<Integer> publisher = new SubmissionPublisher<>();
//Register Subscriber
TestIntegerSubscriber subscriber = new TestIntegerSubscriber();
publisher.subscribe(subscriber);
assertTrue(publisher.hasSubscribers());
//Publish items
System.out.println("Publishing Items...");
List.of(1,2,3,4,5).stream().forEach(i -> {
publisher.submit(i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// blah
}
});
assertEquals(5, subscriber.getLastItem());
publisher.close();
}
private class TestIntegerSubscriber implements Flow.Subscriber<Integer> {
private int lastItem;
@Override
public void onSubscribe(Flow.Subscription subscription) {
System.out.println("Subscribed");
lastItem = 0;
} …Run Code Online (Sandbox Code Playgroud) 我是功能编程和Clojure的新手,所以我不确定如何为大学的项目做些什么.该项目应显示Clojure STM对银行交易的优势(从账户A转账到账户B).所以我打算这样做:
[
random-account-source-id(0, N_MAX) ,
random-account-destination-id(0, N_MAX), random-money (0, 1000) ]
for i=0; i lt N; i++;
synchronize: transfer (matrix[i].source,matrix[i].dest,matrix[i].money)
Run Code Online (Sandbox Code Playgroud)我不确定这个,然后,也许:
(defn do-all[]
(dosync
(when (pos? N)
(transfer (get matrix [pos 1], get matrix [pos 2], get matrix [pos 3])))))
Run Code Online (Sandbox Code Playgroud) 我想MAX_OPERATIONS从一个账户到另一个账户进行一定数量的资金转账.帐户作为refs存储在散列图调用程序中my-map(int account-id,double balance).
汇款需要从散列图"随机指数",并将它作为account-from对transfer.account-destination并且amount都应该修复.
不幸的是我不能让它发挥作用.
(defn transfer [from-account to-account amount]
(dosync
(if (> amount @from-account)
(throw (Exception. "Not enough money")))
(alter from-account - amount)
(alter to-account + amount)))
(defn transfer-all []
(dotimes [MAX_OPERATIONS]
(transfer (get mymap (rand-int[MAX_ACCOUNT]) :account-id) account-destination amount)))
Run Code Online (Sandbox Code Playgroud) 我希望显示£2.00而不是£2或£3.50而不是£3.5.
这些数字可以说price是DOUBLE在MySQL数据库中定义的.如何强制MySQL或PHP显示两位小数?
非常感谢!