我有2D闭合矢量路径,在SVG路径类语法中指定- 即这些路径包括直线和各种贝塞尔曲线.有没有什么像一个小的,漂亮的和离散的库(最好用C,Java或Ruby,但如果这个库干净且易于使用,任何语言都可以),它允许做这些路径的联合,交叉和减法等布尔运算?
到目前为止我发现的内容包括:
所以,问题是,是否有任何其他小巧,易用的库可以在类似SVG的路径上处理布尔运算?
Scala中的一个非常新手的问题 - 如何在Scala中执行"重复功能,直到返回某些内容符合我的标准"?
鉴于我有一个函数,我想调用它,直到它返回结果,例如,定义如下:
def tryToGetResult: Option[MysteriousResult]
Run Code Online (Sandbox Code Playgroud)
我想出了这个解决方案,但我真的觉得这是丑陋的:
var res: Option[MysteriousResult] = None
do {
res = tryToGetResult
} while (res.isEmpty)
doSomethingWith(res.get)
Run Code Online (Sandbox Code Playgroud)
或者,相当丑陋:
var res: Option[MysteriousResult] = None
while (res.isEmpty) {
res = tryToGetResult
}
doSomethingWith(res.get)
Run Code Online (Sandbox Code Playgroud)
我真的觉得有一个解决方案,没有var和没有这么多麻烦手动检查是否Option是空的.
为了比较,我看到的Java替代方案在这里看起来更清晰:
MysteriousResult tryToGetResult(); // returns null if no result yet
MysteriousResult res;
while ((res = tryToGetResult()) == null);
doSomethingWith(res);
Run Code Online (Sandbox Code Playgroud)
为了增加对伤害的侮辱,如果我们不需要doSomethingWith(res)并且我们只需要从这个函数返回它,Scala vs Java看起来像这样:
def getResult: MysteriousResult = {
var res: Option[MysteriousResult] = None
do { …Run Code Online (Sandbox Code Playgroud) 我对某些产品有一些神秘的命名标签,我想用带有突破标签的图解释它们,类似于:
也就是说,我有一些长而神秘的标签(在这个例子中是"A-253-QZ",在现实世界中通常有8-10-12个组件),我需要解释它的部分,即"A"例如,"253"表示系列指示符,"最大速度"和"QZ"是可接受的电池类型.
我需要动态生成这些图表,所以我更喜欢用HTML + CSS进行布局.
到目前为止,我最努力的是一个复杂的表,它使用它的边框绘制这些突破线 - JSBin.它看起来像这样:
我明白这是非常不理想的:
任何想法如何做得更好/没有表/修复提到的问题?关于更好地表达概念的任何想法?
我想用循环设置数组元素:
for i in 0 1 2 3 4 5 6 7 8 9
do
array[$i] = 'sg'
done
echo $array[0]
echo $array[1]
Run Code Online (Sandbox Code Playgroud)
所以它不起作用.如何..?
有没有标准或至少广泛实现的东西String.format,但有命名参数?
我想以这样的方式格式化一个模板化的字符串:
Map<String, Object> args = new HashMap<String, Object>();
args.put("PATH", "/usr/bin");
args.put("file", "foo");
String s = someHypotheticalMethod("#{PATH}/ls #{file}");
// "/usr/bin/ls foo"
Run Code Online (Sandbox Code Playgroud)
从技术上讲,它几乎与:
String[] args = new String[] { "/usr/bin", "foo" };
String s = String.format("%1$s/ls %2$s", args);
// "/usr/bin/ls foo"
Run Code Online (Sandbox Code Playgroud)
但是有了命名参数.
我知道:
但是他们都使用有序或至少编号的参数,而不是命名参数.我知道实现一个是微不足道的,但是我是否正在寻找标准Java库中的机制,或者至少在Apache Commons/Guava /类似的东西中,而不引入高调的模板引擎?
注意:我对真正的模板引擎并不感兴趣,它具有一些命令/功能逻辑,流控制,修饰符,子模板/包含,迭代器等功能.通常,以下方法是一个有效的4行实现 - 这就是我所需要的:
public static String interpolate(String format, Map<String, ? extends Object> args) {
String out = format;
for (String arg : args.keySet()) {
out = Pattern.compile(Pattern.quote("#{" + arg …Run Code Online (Sandbox Code Playgroud) 作为Java-to-Scala切换器,我经常发现自己重写了处理类似的东西
val itemOpt: Option[Item] = items.get(coords) // "items" is something like a Map
if (itemOpt.isDefined) {
val item = itemOpt.get
// do something with item, querying item fields a lot of times, for example
if (item.qty > 10) {
storeInVault(item.name, item.qty, coords)
} else {
storeInRoom(item)
}
}
Run Code Online (Sandbox Code Playgroud)
我想这长相丑陋,它真的看起来像Java的重写一段代码:
Item item = items.get(coords);
if (item != null) {
// do something with item, querying item fields a lot of times, for example
}
Run Code Online (Sandbox Code Playgroud)
它在Java中看起来也很难看,但至少它只有一行.在Scala中处理这种简单案例的最佳做法是什么?我已经知道flatMap并flatten处理集合 …
我有一个典型的OO模式:一个基本抽象类(定义抽象方法)和几个以类特定方式实现这些抽象方法的类.
我习惯在抽象方法中只编写一次文档,然后它自动传播到几个具体的类(至少它在Javadoc,Scaladoc,Doxygen中以下面的方式工作),即我不需要重复相同的描述在所有具体课程中.
但是,我无法找到如何在YARD中进行此类传播.我试过,例如:
# Some description of abstract class.
# @abstract
class AbstractClass
# Some method description.
# @return [Symbol] some return description
# @abstract
def do_something
raise AbstractMethodException.new
end
end
class ConcreteClass < AbstractClass
def do_something
puts "Real implementation here"
return :foo
end
end
Run Code Online (Sandbox Code Playgroud)
我得到了什么:
AbstractMethodException在抽象类中调用,在具体类中完成AbstractClass明确定义为抽象,ConcreteClass是正常的AbstractClassAbstractMethodException在AbstractClassObject返回类型ConcreteClass,没有一个通知表明基类中存在抽象方法.我期望获得:
ConcreteClass从info at 继承(即复制)到AbstractClassConcreteClass的描述中,与来自一些参考链接ConcreteClass#do_something到AbstractMethod#do_something …是否有一个很好的方法可以在Java中获得体面,可靠的数字采样声音播放?
我的请求列表非常简短:
拥有以下内容会很高兴,但实际上我可以没有它:
我已经尝试了臭名昭着的Java Sound API,但发现它完全不可靠,似乎无法满足我的最小愿望清单.我得到的问题:
在使用ALSA dmix(OpenJDK 6)的Linux上,在初始化Java Sound API时让任何其他应用程序使用音频只会使Java应用程序中的所有声音消失而不会出现任何错误/警告.
在Linux(OpenJDK 6)上,列出MixerInfos并尝试Clip使用其中任何一个获取对象时,在尝试加载wav文件时会引发以下异常:
java.lang.IllegalArgumentException: Line unsupported: interface Clip supporting format PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian
Run Code Online (Sandbox Code Playgroud)
因此,AudioSystem.getClip(anySortOfMixer)似乎根本不起作用.只有AudioSystem.getClip()作品.
使用不同的采样率/位/格式加载文件Clip失败LineUnavailableException.似乎第一次调用clip.open将声音系统设置为特定声音选项,在调用后加载具有略微不同采样率的文件(例如,第一个是44100,第二个是48000)
在Linux(OpenJDK 6)上初始化几个不同的Clips并尝试播放它们只会使最后加载Clip声音 - 没有给出错误/警告,但只有play在最后Clip加载时才使用任何声音 - 所有其他声音都是静音的:
Clip loadSound(String name) {
URL url = this.getClass().getResource("/" + name + ".wav");
Clip …Run Code Online (Sandbox Code Playgroud)例如,Perldata文档中Perl中的标量字符串仅受可用内存的限制,但我强烈怀疑在现实生活中会有一些其他限制.
我正在考虑以下想法:
2 ** 31,2 ** 32,2 ** 63或2 ** 64字节.那么,在现实生活中限制Perl字符串长度的其他因素是什么?出于实际目的,应该考虑一个好的字符串长度?
给定Scala中的一个集合,我想遍历这个集合,并为每个对象发送(yield)从0到多个元素,这些元素应该连接成一个新的集合.
例如,我希望这样的事情:
val input = Range(0, 15)
val output = input.somefancymapfunction((x) => {
if (x % 3 == 0)
yield(s"${x}/3")
if (x % 5 == 0)
yield(s"${x}/5")
})
Run Code Online (Sandbox Code Playgroud)
构建一个output包含的集合
(0/3, 0/5, 3/3, 5/5, 6/3, 9/3, 10/5, 12/3)
Run Code Online (Sandbox Code Playgroud)
基本上,我想要filter(1→0..1)和map(1→1)允许的超集:映射(1→0..n).
显然,在非功能性的maneer中可以这样做,例如:
var output = mutable.ListBuffer()
input.foreach((x) => {
if (x % 3 == 0)
output += s"${x}/3"
if (x % 5 == 0)
output += s"${x}/5"
})
Run Code Online (Sandbox Code Playgroud)
我知道flatMap,但它又是:
1)如果我们谈论任意数量的输出元素,那就变得非常难看:
val output …Run Code Online (Sandbox Code Playgroud)