我有一个模块,它存在于两个相似的类中.模块中包含的一些方法供两个类使用相同的方法返回一个新实例.
但是如何在模块中编码应该调用包含类的构造函数?
一个简化的例子:
module Point3D
def initialize(x,y,z)
@x = x
@y = y
@z = z
end
def * (scalar)
<myclass>.new(@x * scalar, @y * scalar, @z * scalar)
end
end
class Vertex
include Point3D
end
class Vector
include Point3D
end
Run Code Online (Sandbox Code Playgroud)
那么在*如何调用构造函数的定义中,在Vertex类的上下文中它返回了一个新的Vertex,并且在Vector类的上下文中它返回了一个新的Vector,而没有在每个类中重新声明所有这些方法?
我想嵌入代码片段到一个页面,王牌编辑为证明这里.
但是,由于要从较大的文件中提取这些片段,我希望装订线中的行号反映代码的原始行号.换句话说,我希望能够为嵌入式实例指定它应该分配给第一行的数字和数量.
可以配置(或黑客)Ace编辑器以这种方式运行吗?
我正在开发一个Django应用程序,它在某些页面中大量使用Angular,例如在domain.com/myAngularApp
在角度页面中,我使用Angular路由在该页面内的不同视图/状态之间导航.但是在整个网站上都有导航链接,这些链接需要导致对Django的往返请求.但是,所有页面都包含相同的已编译的javascript文件,其中包含Angular路由声明.
所以我的问题是:如何让Angular管理自己的路由,并在位置发生变化时(主要是通过点击页面上的链接)转移到未明确告知其拥有的路径,即到域外的不同子目录.
我的路由声明看起来像:
myApp.config( function($locationProvider, $routeProvider) {
$locationProvider.html5Mode(true);
$routeProvider.when('/myAngularApp/', {
templateURL: 'template1.html'
});
$routeProvider.when('/myAngularApp/stuff', {
templateURL: 'template12.html'
});
$routeProvider.otherwise({redirectTo: <not sure what to do here...> });
})
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
$routeProvider.otherwise({redirectTo: function(a1,r,a3){ window.location.href = r }})
Run Code Online (Sandbox Code Playgroud)
但这会使页面在任何不匹配的路由上无休止地刷新.
抛弃其他声明似乎使得在直接访问时不可能留下具有不匹配路由的页面...不明白为什么?
必须有可能做我想做的事吗?
我正在考虑在nodejs中构建一个应用程序,它需要流式传输包含整数数组的大(> GB)文件.最重要的是,阵列需要以最佳方式进行序列化,因此不是基于ascii,理想情况下使用8位用于较小的整数(这将是绝大多数数据),但仍然能够代表更大的数字.
这个问题可能不仅仅是关于nodejs,而是如何在nodejs中解决这个问题?是否有现成的流式文件解决方案,其中包含来自磁盘的自定义字节编码?或者更好,整数数组?
理想情况下,即使使用ssd,流的每个部分的解码也应该是磁盘绑定而不是cpu绑定.
我想使用过滤器表达式values | filter:value1来隐藏或显示div,where values和valueare都在包含指令的link函数的范围内声明.
这可以按预期工作,除了它不断触发无限的摘要循环错误.
请参阅此jsbin进行演示:http://jsbin.com/nujineci/2/edit
我究竟做错了什么?当过滤器没有更新模型时,为什么会出现这些错误?
我有类似的东西
var foo = function(arg){
var something = {
myPropVal: "the code",
myMethodProp: function(bla) {
// do stuff with mypropval here
alert(this) // => DOMWindow
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可能吗?我可以从 myMethodProp 中访问 myPropVal 的内容吗?
我有一个表单,我想在用户点击提交时触发验证.如果验证失败,则显示适当的错误消息.这很有用.
但是,如果验证通过,我希望表单提交具有完整页面重新加载的同步POST请求,就像操作和方法参数设置为正常一样.
如何从AngularJS范围的ng-submit函数触发正常的post动作(不是AJAX)?
我的形式当然看起来基本如下:
<form id="myForm" name="myForm" ng-submit="formAction(this, models)">
...
<input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)
我能想到的最好的方法是用另一个隐藏的形式来反映表单的内容,提交那个,但必须有更好的方法!
要澄清:如果验证通过,我需要表单提交,基本上表现得像普通的同步帖子表单提交,它将用户放在服务器从post请求返回的页面上.
我正在编写一个Ruby脚本来处理一个大文本文件,并继续得到奇怪的编码错误.情况如下:
input_data = File.new(in_path, 'r').read
p input_data.encoding.name # UTF-8
break_char = "\r".encode("UTF-8")
p break_char # "\r"
p break_char.encoding.name # "UTF-8"
input_data.split(",".encode("UTF-8"))
p Encoding.compatible?(input_data, break_char) # # Encoding:UTF-8>
Run Code Online (Sandbox Code Playgroud)
这会产生错误 :in 'split': invalid byte sequence in UTF-8 (ArgumentError)
我阅读http://blog.grayproductions.net/articles/ruby_19s_string并查看其他解决方案显然是同样的问题,但是当我相信我正在控制编码时仍然无法解决为什么会发生这种情况.
我在OSX上使用ruby 1.9.2
我正在编写一个方法来将另一个方法包装为类的一部分.它需要接受并传递任意数量的参数.
就像是...
def do(*things)
old_method(things)
end
Run Code Online (Sandbox Code Playgroud)
除了这不起作用,因为old_method需要作为单独的参数而不是作为数组传递thing数组的内容.
我只是想不出一种在ruby语法中做到这一点的方法......
我从红宝石的哈希中得到一些相当意想不到的行为
这是问题的简化演示
estdata = ["a","b","c"]
outputHash = Hash.new({:IDs => [], :count => 0})
estdata.each do |x|
outputHash[x][:IDs] << x
outputHash[x][:count] +=1
end
p outputHash # => {}
p outputHash["a"] # => {:count=>3, :IDs=>["a", "b", "c"]}
Run Code Online (Sandbox Code Playgroud)
首先,为什么第一个p输出空哈希时,显然outputHash不为空?
其次,更令我沮丧和困惑的是,为什么看起来每个键都指向一个值(包含:count和:IDs键的哈希)以及我如何解决这个问题?
ruby ×4
angularjs ×3
javascript ×2
ace-editor ×1
arrays ×1
encoding ×1
forms ×1
hash ×1
ng-submit ×1
node.js ×1
string ×1
syntax ×1
url-routing ×1