小编MxL*_*evs的帖子

根据给定的顺序对数字数组进行排序

我有两个数组.第一个数组包含排序顺序.第二个数组包含任意数量的元素.

我有一个属性,保证第二个数组中的所有元素(按值)保证在第一个数组中,我只使用数字.

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中的元素不应更改,只能重新排序.我怎样才能做到这一点?

ruby

5
推荐指数
1
解决办法
458
查看次数

Ruby:检查是否在别名之前定义了方法

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.是否有一种简短的方法来检查我是否已经定义了一个别名的方法?

ruby

5
推荐指数
1
解决办法
1827
查看次数

读取位对齐数据

我一直在阅读Adobe网站上提供的SWF格式,它提到为了节省空间,可变位用于存储整数或浮点数(pdf中的第17页)

我一直使用字节对齐的数据,因此没有考虑到位对齐的文件,或者在每个字节中存储信息的情况下进行可变对齐.

因此,例如,您可能有一个包含顺序存储的四个13位整数的结构(而不​​是将它们存储为四个16位整数).

前13位是第一个整数,接下来的13位是第二个整数,依此类推.它填充适当的最后一个字节,使结构与文件的其余部分字节对齐,因此52位将填充到56位,需要7个字节来存储这4个整数而不是8个字节.

  • 我该如何处理这类问题?
  • 如何在位级处理字节流?
  • 有什么我可以用来帮助更容易地处理这些数据吗?

我想解决方案归结为在字节数组上使用位操作.

解析四个13位整数的示例解决方案也很好,以演示使用您建议的方法.

c# .net-3.5

5
推荐指数
1
解决办法
1097
查看次数

我可以在Ruby中动态调用数学运算符吗?

红宝石中有这样的东西吗?

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)

ruby reflection metaprogramming

5
推荐指数
1
解决办法
2089
查看次数

编写一个带语法的解析器并生成一个解析树

我的目标是编写一个将采用逻辑表达式的函数(例如: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)

这是我的算法

  1. 给出一个表达式S.
  2. 使用上面的语法递归地解析表达式并构建相应的解析树
  3. 通过递归"简化"树上的任何NOT运算符将表达式转换为DNF.
  4. 递归遍历最终解析树并输出DNF逻辑表达式.

使用解析树,我可以通过检查当前节点的父节点,并将其向下推入树或重新排列树(在NOT NOT的情况下)来简化NOT运算符.然后平坦树是微不足道的.

这适用于纸上,但现在我坚持使用实际的解析器.如何将这些规则转换为解析器类?我不想使用外部库,并希望从头开始编写解析器.

ruby

5
推荐指数
1
解决办法
623
查看次数

在JTable中显示各种对象的实例变量并对其进行修改

我正在设计一个有两个小部件的应用程序:

- 包含任意对象的列表
- 显示当前所选对象的特定属性的表

目标是能够从列表中选择一个对象,查看属性,并根据需要进行修改.该列表可以包含各种类型的对象.

所以说列表包含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对象,每个可能的类一个.该表将知道要显示的行以及如何访问对象的实例变量.但是每次添加新类时我都要定义一个新的表模型,这听起来像是一个弱设计.

java

5
推荐指数
1
解决办法
159
查看次数

Rails 4:不兼容的字符编码:UTF-8 和 ASCII-8BIT

我有一个应用程序,允许用户输入字符串,我解析它,将其存储在数据库中以供历史用途,然后返回一些消息。

在控制器中,这就是我构建消息的方式

@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)

对这个问题进行搜索后得到了多种解决方案以及对问题发生原因的解释。我在几个地方正确处理编码:

  • 我的应用程序默认将内容转换为 UTF8。
  • 当我输入中文字符并在控制器中呈现特定标记时,它会显示我输入的内容。
  • 当我渲染上面的连接字符串时,它显示正确的字符串
  • 数据库设置为UTF-8编码
  • 其他页面能够正确呈现文本(它们从数据库获取并直接显示它,而无需我进行任何类型的字符串操作)

当我在视图中注释掉“这一行”时,问题就消失了,但我不明白它出了什么问题。

如果我按照另一个建议写这个,它就会起作用

<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)

这也有效。

连接字符串的正确方法是什么?

encoding ruby-on-rails ruby-on-rails-4

5
推荐指数
1
解决办法
9887
查看次数

在清理临时文件的同时关闭Selenium而不关闭浏览器

我有一组使用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应用程序以编程方式启动它之外。

java selenium

5
推荐指数
1
解决办法
1207
查看次数

将n个元素追加到数组中

我有一个数组和一个哈希

L = []
H = {3=>"a", 2=>"b", 1=>"c"}

因此,我将迭代键以获得元素出现的次数,并将该元素追加到数组n次

结果

L = ['a', 'a', 'a', 'b', 'b', 'c']

使用inject(或者我经常在ruby代码中看到的其他方法)编写这个的好方法是什么?

ruby arrays

4
推荐指数
1
解决办法
418
查看次数

在一次调用中列出 Windows 文件夹中具有特定扩展名的所有文件

我想获取特定目录中的所有.txt.csv.xsl文件并将文件名写入文件。

我可以在批处理文件中调用它三遍

dir /b *.csv > results.txt
dir /b *.xsl >> results.txt
dir /b *.txt >> results.txt
Run Code Online (Sandbox Code Playgroud)

但是我可以在一行中完成吗?

batch-file

4
推荐指数
1
解决办法
4243
查看次数