小编wro*_*ame的帖子

Clojure"如果"从未评估其第三个论点

我一直想把这个问题想象一下.

(defn is-decimal [astr]
  (if (. astr (indexOf (int \.)))
    (Double/parseDouble astr)
    (Integer/parseInt astr)))
Run Code Online (Sandbox Code Playgroud)

这就是我写的功能.is-decimal或者传递诸如"2.5"或"5"之类的东西或类似的东西,但它总是使用if第二个参数,而不是第三个参数.我(. astr (indexOf (int \.)))在REPL中测试过,它看起来工作正常,它在失败时返回-1,而在它失败时返回1.我相信这可能是问题所在.-1在Clojure中并不意味着错误.谁能想到解决这个问题的方法?

提前致谢.

编辑:谢谢你的帮助.在我写完之后,我有了一个主意.我编写了一个检查1和-1的谓词函数.正是我需要的.醒来后我不应该直接编码:

clojure

7
推荐指数
2
解决办法
1268
查看次数

从没有默认构造函数的类继承的类

现在我有一个A继承自类的类B,并且B没有默认的构造函数.我正在尝试创建一个构造函数,A它具有与构造函数完全相同的参数B,但我得到:

error: no matching function for call to ‘B::B()’
note: candidates are: B::B(int)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误?

c++ inheritance constructor class default-constructor

7
推荐指数
2
解决办法
2万
查看次数

检查列表是否为空的最佳方法是什么?

在Common Lisp中,如果我想检查列表是否为空,我可以简单地使用列表本身作为条件,因为所有非零列表都被认为是真的.但是,我发现在Scheme中,同样会让Scheme认为我正在尝试调用一个函数.有没有更好的方法来检查Scheme中的列表是否为null而不是定义另一个函数(not (null? x))呢?

scheme

7
推荐指数
2
解决办法
3万
查看次数

Clojure中的Do-while循环?

所以我想首先执行一堆代码,然后询问用户是否要再次执行此操作.我认为最方便的方法是在C++中使用do-while循环,因为我似乎无法在Clojure中找到任何do-while函数,所以我写了以下内容:

(defmacro do-while
  "Executes body before testing for truth expression"
  [test & body]
  `(do (do ~@body) (while ~test ~@body)))
Run Code Online (Sandbox Code Playgroud)

是否有更好的(如在更惯用的Clojure-ish中)编写这个宏的方式,或者可能是一种更好的方式来做我想要的而不经过do-while路线?

functional-programming clojure

7
推荐指数
1
解决办法
3309
查看次数

defmulti vs defprotocol?

似乎两者都可用于定义稍后可以使用不同数据类型实现的函数.AFAIK的主要区别在于defmulti可以在地图上工作并defprotocol在记录上工作.

还有什么其他差异?使用一个而不是另一个有什么好处?

records protocols clojure clojure-1.3

7
推荐指数
2
解决办法
1260
查看次数

我该如何包装div?

基本上,我希望外部div外部的内部div根据外部div的宽度进行换行,而外部div又根据浏览器窗口的宽度进行扩展和收缩,如下所示:

.---------------------.
|                     | <-- Browser Window
| .-----------------. |
| |  ,-,  ,-,  ,-,  | |
| |  |X|  |X|  |X|  | |
| |  `-`  `-`  `-`  | |
| |                 | |
| |  ,-,  ,-,  ,-,  | |
| |  |X|  |X|  |X|  | |
| |  `-`  `-`  `-`  | |
| `-----------------` |
|                     |
`---------------------`

.-------------------------------.
|                               | <-- Browser Window enlarged
| .---------------------------. |
| |  ,-,  ,-,  ,-,  ,-,  ,-,  | …
Run Code Online (Sandbox Code Playgroud)

html javascript css layout web

7
推荐指数
1
解决办法
9754
查看次数

如何在Python中使用正则表达式匹配重音字符?

除了Python,我需要这个问题的解决方案!我已经尝试为Python安装regex库,因为显然可以在Python的正则表达式中使用POSIX表达式,但是我猜它在[:alpha:]类中不包含Unicode字符.例如:

>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0)
'Please work bl'
Run Code Online (Sandbox Code Playgroud)

当我希望它匹配 Please work blåbær and NOW stop

编辑:我使用的是Python 2.7

编辑2:我尝试了以下内容:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0)
'Please work bl\xc3'
Run Code Online (Sandbox Code Playgroud)

不是我想要的(我想在第一个非ASCII字符之后匹配部分),但至少它在字符上比以前更匹配.我应该在这做什么才能让它与我想要的其他东西相匹配?

编辑3:我不想匹配任何非"单词"字符; "word"是指az,AZ,space和单词字符的任何重音变体.我希望我得到了我的想法; 在一个短语中

lets match força, but stop before that comma
Run Code Online (Sandbox Code Playgroud)

我想只匹配 lets match força

编辑4:所以我尝试将Python 3用于这个脚本:

>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0)
'lets match força'
Run Code Online (Sandbox Code Playgroud)

我猜它在Python 3中大部分都有用,除了它还匹配数字(我绝对不想要)和下划线.有什么方法可以解决这个问题,在Python …

python regex unicode non-ascii-characters

7
推荐指数
1
解决办法
5255
查看次数

通用vs通配符未知类型

什么时候建议做:

public <E> boolean hasPropertyX(List<E extends User> alist);
Run Code Online (Sandbox Code Playgroud)

public boolean hasPropertyX(List<? extends User> alist);
Run Code Online (Sandbox Code Playgroud)

看起来它们的效果也一样好.

java generics wildcard

7
推荐指数
1
解决办法
447
查看次数

删除mathjax-rails后的循环依赖性错误

所以我的Gemfile目前看起来像

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.4'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.1.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails' …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mathjax ruby-on-rails-4

7
推荐指数
1
解决办法
96
查看次数

为什么有些特质不能做成对象

我理解的规则,当一个特征可以做成一个特征对象,但我不明白为什么这些规则的存在。

例如:

trait Resource {
    const RESOURCE_ID: u64;
}

trait ResourceStatic {
    fn static_id() -> u64;
}

trait ResourceInstance {
    fn resource_id(&self) -> u64;
}

struct MyResource {}

impl Resource for MyResource {
    const RESOURCE_ID: u64 = 123;
}

impl ResourceStatic for MyResource {
    fn static_id() -> u64 {
        123
    }
}

impl ResourceInstance for MyResource {
    fn resource_id(&self) -> u64 {
        123
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这三个特征基本上都封装了相同的功能。那么为什么这些是不允许的:

let _: Box<dyn Resource> = Box::new(MyResource{});
let _: Box<dyn ResourceStatic> …
Run Code Online (Sandbox Code Playgroud)

rust trait-objects

7
推荐指数
1
解决办法
86
查看次数