我有两个数组.第一个数组包含排序顺序.第二个数组包含任意数量的元素.
我有一个属性,保证第二个数组中的所有元素(按值)保证在第一个数组中,我只使用数字.
A = [1,3,4,4,4,5,2,1,1,1,3,3]
Order = [3,1,2,4,5]
Run Code Online (Sandbox Code Playgroud)
当我排序时A,我希望元素按照指定的顺序出现Order:
[3, 3, 3, 1, 1, 1, 1, 2, 4, 4, 4, 5]
Run Code Online (Sandbox Code Playgroud)
请注意,重复是公平的游戏.A中的元素不应更改,只能重新排序.我怎样才能做到这一点?
class Test
def my_print
p "Print something"
end
end
class Test
alias_method :old_print, :my_print
def my_print
old_print
p "Print some more"
end
end
我原来的Test课程位于顶部.然后我决定添加更多内容,但我决定使用别名.
但是假设已经定义了my_print.是否有一种简短的方法来检查我是否已经定义了一个别名的方法?
我一直在阅读Adobe网站上提供的SWF格式,它提到为了节省空间,可变位用于存储整数或浮点数(pdf中的第17页)
我一直使用字节对齐的数据,因此没有考虑到位对齐的文件,或者在每个字节中存储信息的情况下进行可变对齐.
因此,例如,您可能有一个包含顺序存储的四个13位整数的结构(而不是将它们存储为四个16位整数).
前13位是第一个整数,接下来的13位是第二个整数,依此类推.它填充适当的最后一个字节,使结构与文件的其余部分字节对齐,因此52位将填充到56位,需要7个字节来存储这4个整数而不是8个字节.
我想解决方案归结为在字节数组上使用位操作.
解析四个13位整数的示例解决方案也很好,以演示使用您建议的方法.
红宝石中有这样的东西吗?
send(+, 1, 2)
Run Code Online (Sandbox Code Playgroud)
我想让这段代码看起来不那么多余
if op == "+"
return arg1 + arg2
elsif op == "-"
return arg1 - arg2
elsif op == "*"
return arg1 * arg2
elsif op == "/"
return arg1 / arg2
Run Code Online (Sandbox Code Playgroud) 我的目标是编写一个将采用逻辑表达式的函数(例如:A OR NOT(B和C))并将其转换为析取范式.(不是B或不是C)
我写了一个会生成逻辑表达式的语法
S => !S
S => (S)
S => S op S
S => W
op => AND | OR
W => A | B | C | ... | Z
Run Code Online (Sandbox Code Playgroud)
这是我的算法
使用解析树,我可以通过检查当前节点的父节点,并将其向下推入树或重新排列树(在NOT NOT的情况下)来简化NOT运算符.然后平坦树是微不足道的.
这适用于纸上,但现在我坚持使用实际的解析器.如何将这些规则转换为解析器类?我不想使用外部库,并希望从头开始编写解析器.
我正在设计一个有两个小部件的应用程序:
- 包含任意对象的列表
- 显示当前所选对象的特定属性的表
目标是能够从列表中选择一个对象,查看属性,并根据需要进行修改.该列表可以包含各种类型的对象.
所以说列表包含Vehicle对象和Person对象
public class Person
{
public String name;
public Integer age;
}
public class Vehicle
{
public String make;
public String model;
}
Run Code Online (Sandbox Code Playgroud)
如果我单击一个Person对象,该表将显示名称和年龄,我可以为它们分配新值.同样,如果我点击一个Vehicle对象,它将在表格中显示品牌和型号,并允许我修改它们.
我考虑过编写类似的方法
public String[] getFields()
{
return new String[] {"name", "age"};
}
Run Code Online (Sandbox Code Playgroud)
它返回一个表示我想要查看的实例变量的字符串列表,并使用一些反射方法来获取/设置它们.我可以getFields在所有类中定义此方法,以便我可以使用该表来处理可能被抛入列表的任意对象.
但有没有办法设计这个,这样我就不会诉诸于反思?目前的方法似乎是糟糕的设计.
另一方面,我可以创建多个TableModel对象,每个可能的类一个.该表将知道要显示的行以及如何访问对象的实例变量.但是每次添加新类时我都要定义一个新的表模型,这听起来像是一个弱设计.
我有一个应用程序,允许用户输入字符串,我解析它,将其存储在数据库中以供历史用途,然后返回一些消息。
在控制器中,这就是我构建消息的方式
@messages << name + " was not created"
Run Code Online (Sandbox Code Playgroud)
在视图中,这是它崩溃的线路
<% @messages.each do |msg| %>
<li> <b><%= msg %></b></li> <--- this line
<% end %>
Run Code Online (Sandbox Code Playgroud)
对这个问题进行搜索后得到了多种解决方案以及对问题发生原因的解释。我在几个地方正确处理编码:
当我在视图中注释掉“这一行”时,问题就消失了,但我不明白它出了什么问题。
如果我按照另一个建议写这个,它就会起作用
<li> <b><%= msg.force_encoding("utf-8") %></b></li>
Run Code Online (Sandbox Code Playgroud)
但我不喜欢它,因为理想情况下所有进入的内容都应该是 UTF-8 或正确转换为 UTF-8,并且视图可以假设它们渲染的所有内容都是正确的,所以我不必“强制”任何编码UTF-8。
我怀疑问题出在我连接字符串的方式上:
@messages << name + " was not created"
Run Code Online (Sandbox Code Playgroud)
如果我像这样进行强制编码
@messages.size.times do |i|
@messages[i] = @messages[i].force_encoding("UTF-8")
end
Run Code Online (Sandbox Code Playgroud)
这也有效。
连接字符串的正确方法是什么?
我有一组使用Selenium WebDriver用Java编写的类,用于在许多不同的网站上自动执行各种任务,例如登录和获取数据。
有时我们需要自己访问该页面以查找某些内容,而手动登录的过程相当……嗯,很无聊,而且很浪费时间。
我想起了,因为我们已经有了登录宏,为什么我们不让硒处理它。
我想打开一个新的浏览器,执行登录过程,然后关闭硒。然后,用户将恢复他们想要在站点上执行的所有任务。
我注意到,如果我没有正确关闭Selenium,它将在temp文件夹中保留一个匿名配置文件。加班之前,在我意识到这件事发生之前,我已经积累了一些演出的资料。原来是因为我没有使用close和正确关闭硒quit
但是,如果使用这些方法,浏览器将被关闭。刚才我测试如下
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.close() // shuts down the browser
Run Code Online (Sandbox Code Playgroud)
然后我尝试
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.quit() // shuts down the browser
Run Code Online (Sandbox Code Playgroud)
我有办法在清理所有这些匿名配置文件的同时关闭Selenium而不关闭浏览器吗?我基本上将其用作宏,除了通过管理所有不同宏的Java应用程序以编程方式启动它之外。
我有一个数组和一个哈希
L = []
H = {3=>"a", 2=>"b", 1=>"c"}
因此,我将迭代键以获得元素出现的次数,并将该元素追加到数组n次
结果
L = ['a', 'a', 'a', 'b', 'b', 'c']
使用inject(或者我经常在ruby代码中看到的其他方法)编写这个的好方法是什么?
我想获取特定目录中的所有.txt、.csv和.xsl文件并将文件名写入文件。
我可以在批处理文件中调用它三遍
dir /b *.csv > results.txt
dir /b *.xsl >> results.txt
dir /b *.txt >> results.txt
Run Code Online (Sandbox Code Playgroud)
但是我可以在一行中完成吗?
ruby ×5
java ×2
.net-3.5 ×1
arrays ×1
batch-file ×1
c# ×1
encoding ×1
reflection ×1
selenium ×1