在Scheme中我可以做到:
#;> (numerator 1/3)
1
#;> (denominator 1/3)
3
Run Code Online (Sandbox Code Playgroud)
在Clojure中我可以做类似的事情:
user=> (numerator 1/3)
1
user=> (denominator 1/3)
3
Run Code Online (Sandbox Code Playgroud)
但在Scheme中我可以这样做:
#;> (numerator 0.3)
3.0
Run Code Online (Sandbox Code Playgroud)
在Clojure中是不可能的:
user=> (numerator 0.3)
ClassCastException java.lang.Double cannot be cast to clojure.lang.Ratio clojure.core/numerator (core.clj:3306)
Run Code Online (Sandbox Code Playgroud)
如何将Double(或实际上任何类型的数字)转换为clojure.lang.Ratio?
在Scheme中我们还有inexact->exactClojure中的"double to ratio",但我找不到类似的东西.
我一直在尝试使用d3.js为我的图形创建一个水平图例.我一直在努力使动态标签的x轴间距正确.
问题是标签的宽度不一致,这是一个完整的例子,这是我计算x位置的函数:
function legendXPosition(data, position, avgFontWidth){
if(position == 0){
return 0;
} else {
var xPostiion = 0;
for(i = 0; i < position; i++){
xPostiion += (data[i].length * avgFontWidth);
}
return xPostiion;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有人对如何改进这个有任何建议?
例如:如果我希望函数equal?识别我自己的类型或记录,我可以添加新的行为equal?吗?没有删除或覆盖旧的?
或者,例如,如果我想使函数"+"接受也字符串?
我可以在Scheme中使用SHA256使用外部库(Java,C或系统相关)或使用特定的Scheme实现(例如Chicken),但我想知道是否存在"纯"方案实现.
我创建了这个解决方案
; use like this:
; (/* content ... */ <default-return>)
; or
; (/* content ... */) => #f
(define-syntax /*
(syntax-rules (*/)
((/* body ... */) #f)
((/* body ... */ r) r)))
Run Code Online (Sandbox Code Playgroud)
但它真的是最好还是最简单的方法?
在Google Maps v2 for Android中,如何获取可见标记?我知道我可以使用Projection并消除点<0和点>屏幕尺寸.但我不想逐一检查,如果我有很多标记,它可能会太慢.有什么简单的方法吗?还是一些现成的解决方案?如果是的话,哪一个?