在对它们执行正则表达式匹配时,Ruby不会自动对符号进行字符串化,这在包含符号的变量时很容易实现,并且在尝试正则表达式匹配之前忘记需要在它们上调用#to_s:
>> :this =~ /./
=> false
>> :this =~ :this
=> false
>> :this =~ /:this/
=> false
Run Code Online (Sandbox Code Playgroud)
事实证明:=〜是在Object,Ruby 1.8的原始类中定义的:
http://rubybrain.com/api/ruby-1.8.7/doc/index.html?a=M000308&name==~
当然,实现只返回false,将其留给String和Regexp这样的子类来提供有意义的实现.
那么为什么Symbol不能提供类似下面的内容呢?
def =~(pattern)
self.to_s =~ pattern
end
Run Code Online (Sandbox Code Playgroud)
那里的任何Ruby语言学家都知道吗?
我有一个看起来像这样的模型:
class StopWord < ActiveRecord::Base
UPDATE_KEYWORDS_BATCH_SIZE = 1000
before_save :update_keywords
def update_keywords
offset = 0
max_id = ((max_kw = Keyword.first(:order => 'id DESC')) and max_kw.id) || 0
while offset <= max_id
begin
conditions = ['id >= ? AND id < ? AND language = ? AND keyword RLIKE ?',
offset, offset + UPDATE_KEYWORDS_BATCH_SIZE, language]
# Clear keywords that matched the old stop word
if @changed_attributes and (old_stop_word = @changed_attributes['stop_word']) and not @new_record
Keyword.update_all 'stopword = 0', conditions + [old_stop_word]
end …Run Code Online (Sandbox Code Playgroud) 在Python 2.6+中,您可以处理以下异常:
try:
# stuff
except Exception as e:
return 'exception %s' % type(e)
Run Code Online (Sandbox Code Playgroud)
2.5中的等价物是多少?
使用以下代码,我可以使用我的AWS账号添加权限,但队列不会收到来自SNS的任何消息.
AddPermissionRequest addPermissionRequest = new AddPermissionRequest();
addPermissionRequest.ActionName.Add("SendMessage");
addPermissionRequest.ActionName.Add("ReceiveMessage");
addPermissionRequest.QueueUrl = queueUrl;
addPermissionRequest.Label = General.IpAddressAWSFriendly;
addPermissionRequest.AWSAccountId.Add(AWS_ACCOUNT_ID);
sqs.AddPermission(addPermissionRequest);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过通配符(*)为每个人设置权限时:
addPermissionRequest.AWSAccountId.Add("*");
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误.如果我在AWS SQS控制台中手动添加权限并指定
SendMessage
ReceiveMessage
Run Code Online (Sandbox Code Playgroud)
对于允许的操作和原则,我将其设置为"所有人",队列确实从我的SNS主题接收消息.所以,显然,我做错了什么,但我再也看不到了.
任何帮助都会很棒!我希望亚马逊有示例,SDK附带的示例并未显示有关设置策略或权限的任何信息.在线文档中也没有显示任何内容.令人沮丧.
如何删除集合中的第n个项目?我想做这样的事情:
(def coll [:apple :banana :orange])
(drop-nth 0 coll) ;=> [:banana :orange]
(drop-nth 1 coll) ;=> [:apple :orange]
(drop-nth 2 coll) ;=> [:apple :banana]
Run Code Online (Sandbox Code Playgroud)
到目前为止,有没有比我想出的更好的方法呢?
(defn drop-nth [n coll]
(concat (take n coll) (nthrest coll (inc n))))
Run Code Online (Sandbox Code Playgroud) TLDR;
lein repl在命名空间开始于定义:main在project.clj,而不是user如所期望.
细节
我有一个Leiningen项目,它在uberjar中作为命令行应用程序部署,所以我可以像这样运行它:
java -jar my-app-1.0-standalone.jar --some --args
Run Code Online (Sandbox Code Playgroud)
我还有一个dev/user.clj给我一个很好的REPL环境,如这里所述.
我project.clj看起来像这样:
(defproject my-app "1.0"
:main my-app.cli
:aot [my-app.cli]
:profiles {:dev {:source-paths ["src" "dev"]}})
Run Code Online (Sandbox Code Playgroud)
当我lein repl从命令行或M-x cider-jack-in从Emacs 启动我的REPL时,我在my-app.cli命名空间中,而不是user.
如果我:main my-app.cli从中移除project.clj,我的REPL user就像我期望的那样在命名空间中启动,但显然这会破坏我的超级明星.
有任何想法吗?
After installing SDL and SDL-devel in MacOS X 10.6 (Snow Leopard), trying to configure some source code that requires SDL yields:
checking for sdl-config... no
checking for SDL - version >= 1.2.0... no
*** The sdl-config script installed by SDL could not be found
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
*** your path, or set the SDL_CONFIG environment variable to the
*** full path to sdl-config.
configure: error: *** SDL version 1.2.0 not found! …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的第一个单元测试添加到现有的开源项目中.具体来说,我添加了一个名为audio_manager的新类:
src/audio/audio_manager.h
src/audio/audio_manager.cc
Run Code Online (Sandbox Code Playgroud)
我创建了一个src/test目录结构,它反映了实现文件的结构,并编写了我的googletest单元测试:
src/test/audio/audio_manager.cc
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试设置我的Makefile.am来编译并运行单元测试:
src/test/audio/Makefile.am
Run Code Online (Sandbox Code Playgroud)
我从以下位置复制了Makefile.am:
src/audio/Makefile.am
Run Code Online (Sandbox Code Playgroud)
有没有人对我有一个简单的配方,还是对我来说是神秘的汽车文档?:)
我正在开发一个使用Maven构建它的Java项目.我正在开发的一些功能在Java中非常麻烦,但在Clojure中很简单,所以我想在Clojure中实现它并让Java无缝地使用生成的类.
这是我需要传递的单元测试(src/test/java/com/foo/weather/DataProcessorTest.java):
package com.foo.weather;
import static org.junit.Assert.*;
import org.junit.Test;
import java.util.*;
public class DataProcessorCljTest {
@Test
public void processWithTotalsAndSubTotals() throws Exception {
assertEquals(2, DataProcessor.process(createRawData()).size());
}
private List<List<String>> createRawData() {
List<List<String>> data = new ArrayList<List<String>>();
data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Temperature", "19.2")));
data.add(new ArrayList<String>(Arrays.asList("2011-11-01", "Pressure", "1.1")));
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
这是Clojure代码(src/main/clojure/com/foo/weather/data-processor.clj):
(ns com.foo.weather.DataProcessor
(:gen-class
:methods [#^{:static true} [process [java.util.List] java.util.List]]))
(defn process [raw-data]
(java.util.ArrayList. []))
Run Code Online (Sandbox Code Playgroud)
我已将以下内容添加到我的pom.xml中以构建Clojure代码:
<project>
<!-- lots of stuff omitted -->
<build>
<plugins>
<!-- ... -->
<plugin>
<groupId>com.theoryinpractise</groupId>
<artifactId>clojure-maven-plugin</artifactId>
<version>1.3.6</version>
<executions>
<execution> …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个Clojure库来做一些基本的几何,例如:
考虑到方程的数学定义,我可以很容易地写出这些,但是如果有一个像样的库已经做到这一点,那么这样做似乎是一种耻辱.
请注意,我不需要以图形方式绘制事物等等,因此引入大量图形依赖项的库并不受欢迎.
clojure ×5
amazon-sqs ×1
automake ×1
c# ×1
c++ ×1
geometry ×1
googletest ×1
java ×1
leiningen ×1
macos ×1
makefile ×1
math ×1
maven ×1
permissions ×1
python ×1
python-2.5 ×1
ruby ×1
sdl ×1
unit-testing ×1