给出如下字符串:
Bob
Bob,
Bob
Bob Burns,
Run Code Online (Sandbox Code Playgroud)
你怎么能用逗号回复那个?
Bob
Bob
Bob
Bob Burns
Run Code Online (Sandbox Code Playgroud)
另外,我希望这个方法不会破坏,如果传递一个零,只是为了返回一个零?
def remove_trailing_comma(str)
!str.nil? ? str.replace(",") :nil
end
Run Code Online (Sandbox Code Playgroud) 在红宝石中,我能够做到
File.dirname("/home/gumby/bigproject/now_with_bugs_fixed/32/FOO_BAR_2096.results")
Run Code Online (Sandbox Code Playgroud)
得到
"/home/gumby/bigproject/now_with_bugs_fixed/32"
Run Code Online (Sandbox Code Playgroud)
但现在我想将该目录字符串拆分为单个文件夹组件,例如
["home", "gumby", "bigproject", "now_with_bugs_fixed", "32"]
Run Code Online (Sandbox Code Playgroud)
除了使用之外,有没有办法做到这一点
directory.split("/")[1:-1]
Run Code Online (Sandbox Code Playgroud) def class A
def a
raise "hi" #can't be reached
end
class B
def b
a() #doesn't find method a.
end
end
end
Run Code Online (Sandbox Code Playgroud)
我想调用from b并引发异常.我怎么能够?
像Ruby和JavaScript这样的语言有开放类,允许你修改偶数核心类的接口,如数字,字符串,数组等.显然,这样做可能会使熟悉API的其他人感到困惑,但是有充分的理由要避免使用它们. ,假设您正在添加到界面而不是更改现有行为?
例如,将一个Array.map实现添加到未实现ECMAScript第5版的Web浏览器(如果您不需要所有jQuery)可能会很好.或者你的Ruby数组可能会受益于使用"inject"的"sum"方便方法.只要更改被隔离到您的系统(例如,不是您发布用于分发的软件包的一部分),是否有充分的理由不利用此语言功能?
我曾经认为元编程涉及修改程序,并且(对于什么是反射及其为什么有用?)的一些答案,反思仅仅包括对程序的内省.但是,反射标签维基说
反射是程序在运行时可以观察和 修改自身结构和行为的过程.
反思是程序可以执行内省的过程.这种内省通常涉及在运行时观察和修改自身结构和行为的能力.从理论角度来看,反思涉及程序指令作为数据存储的事实.程序代码和数据之间的区别在于如何处理信息.因此,程序可以将自己的代码视为数据并观察或修改它们.
[强调补充]
元编程的描述是
元编程正在编写编写或操纵其他程序作为其数据的程序.
元编程很有用,因为它可以节省程序员宝贵的时间.有些语言支持元编程本身,这允许创建具有强大表现力的代码.
(我认为"写"并不意味着将源代码写入文件,因为这是代码生成.)
这会使元编程只是反射的一个子集吗?
或者这些术语是不同的,因为某些编程语言是由另一种语言元编程的,在这种情况下,元编程会发生而不是反射?(在维基百科的元编程文章中有一个未被引用的句子声称这个)
或者"反射"和"元编程"这两个术语的使用方式会有所不同,具体取决于该人使用的编程语言?
我目前有一个带有深度嵌套的复杂形式,我正在使用Cocoon gem来根据需要动态添加部分(例如,如果用户想要在销售表单中添加其他车辆).代码如下所示:
<%= sale.fields_for :sale_vehicles do |sale_vehicles_builder| %>
<%= render :partial => "sale_vehicles/form", :locals => {:f => sale_vehicles_builder, :form_actions_visible => false} %>
<% end -%>
<div class="add-field-links">
<%= link_to_add_association '<i></i> Add Vehicle'.html_safe, sale, :sale_vehicles, :partial => 'sale_vehicles/form', :render_options => {:locals => {:form_actions_visible => 'false', :show_features => true, :fieldset_label => 'Vehicle Details'}}, :class => 'btn' %>
</div>
Run Code Online (Sandbox Code Playgroud)
这对于第一级嵌套非常有效 - sale_vehicle对象由Cocoon正确构建,并且表单按预期呈现.
当存在另一级嵌套时问题出现 - sale_vehicle部分看起来像这样:
<%= f.fields_for :vehicle do |vehicle_builder| %>
<%= render :partial => "vehicles/form", :locals => {:f => …Run Code Online (Sandbox Code Playgroud) 在JavaScript中,如何以简洁的方式重复包含多个元素的数组?
在Ruby中,你可以做到
irb(main):001:0> ["a", "b", "c"] * 3
=> ["a", "b", "c", "a", "b", "c", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
我查了一下lodash库,没找到任何直接适用的东西.功能请求:重复数组.是一个将其添加到lodash的功能请求,以及给出的最佳解决方法
const arrayToRepeat = [1, 2, 3];
const numberOfRepeats = 3;
const repeatedArray = _.flatten(_.times(numberOfRepeats, _.constant(arrayToRepeat)));
Run Code Online (Sandbox Code Playgroud)
问题创建零填充JavaScript数组的最有效方法?并创建一个具有相同元素重复多次的数组,专注于多次重复单个元素,而我想重复一个具有多个元素的数组.
使用维护良好的库是可以接受的.
Java中的方法签名:
public List<String> getFilesIn(List<File> directories)
Run Code Online (Sandbox Code Playgroud)
类似的红宝石
def get_files_in(directories)
Run Code Online (Sandbox Code Playgroud)
对于Java,类型系统为我提供了有关该方法所期望和提供的信息.在Ruby的情况下,我不知道我应该传递什么,或者我期望收到什么.
在Java中,该对象必须正式实现该接口.在Ruby中,传入的对象必须响应此处定义的方法中调用的任何方法.
这似乎很成问题:
不打算讨论静态打字与鸭子打字,而是希望了解如何维护一个几乎没有能力按合同设计的生产系统.
没有人真正通过这种方法所需的文档来解决方法内部实现的暴露问题.由于没有接口,如果我不期望某个特定类型,我不必逐条列出我可能调用的每个方法,以便调用者知道可以传入什么内容吗?或者这只是一个没有真正出现的边缘情况?
为什么我们要专门研究二叉树?正如在一般的m-way搜索树中,不像DataStructure教科书中的二叉树那样重要.
使用二叉树是否超过m-way树?
我正在编写一个基于Ruby的守护进程,以便在我的一个Ubuntu服务器上运行.我希望这能在启动时运行,因此将为它编写一个upstart作业文件.但是,我使用了bundler来管理它使用的各种gem,并打算在将它部署到服务器后执行此操作:
bundle install --deployment
Run Code Online (Sandbox Code Playgroud)
这将捆绑器置于所谓的"部署模式"中,从而设置了各种选项,并且所有宝石都安装在"供应商"目录中而不是系统范围内.然而,这会产生运行它的问题,因此必须从它自己的目录执行,因为这是宝石结束的地方:
<in the app's dir>
$ ./runmyapp
<it runs>
Run Code Online (Sandbox Code Playgroud)
如果我cd到另一个位置,然后尝试使用它的完整路径运行它,它会失败:
<in another directory>
$ /path/to/runmyapp
<it crashes as it can't locate its gems>
Run Code Online (Sandbox Code Playgroud)
我已阅读了大量的捆绑文档,这整个场景甚至从未被涵盖过?我应该将宝石安装到系统中吗?还有什么我应该做的吗?
ruby ×6
javascript ×2
oop ×2
activerecord ×1
arrays ×1
bundler ×1
cocoon-gem ×1
interface ×1
java ×1
linux ×1
macruby ×1
reflection ×1
regex ×1
repeat ×1
rubygems ×1
string ×1
terminology ×1
tree ×1
windows ×1