我想使用缓冲流,因为我想使用一个peek()方法来提前查看,但使用我的流与另一个需要类文件对象的方法.(我使用seek()但可能必须处理不支持随机访问的管道输入I/O.)
但是这个测试用例失败了:
AttributeError:'file'对象没有属性'_checkReadable'
import sys
import io
srcfile = sys.argv[1]
with open(srcfile, 'rb') as f:
fbuf = io.BufferedReader(f)
print fbuf.read(20)
Run Code Online (Sandbox Code Playgroud)
发生了什么,我该如何解决?我以为BufferedReader旨在缓冲流.如果是这样,为什么open()函数不会返回与它兼容的东西?
我正在开发一个PHP应用程序,我想知道为其他国家的用户提供多语言支持的最佳方法.
我精通PHP,但从未开发过任何支持其他语言的东西.
我想将语言放入带有常量的PHP文件中,例如:
en.php可能包含:
define('HZ_DB_CONN_ERR', 'There was an error connecting to the database.');
Run Code Online (Sandbox Code Playgroud)
和fr.php可能包含:
define('HZ_DB_CONN_ERR', 'whatever the french is for the above...');
Run Code Online (Sandbox Code Playgroud)
然后我可以调用一个函数并自动传入正确的语言.
hz_die('HZ_DB_CONN_ERR', $this);
Run Code Online (Sandbox Code Playgroud)
这是一个很好的方式吗?
- morristhebear.
我需要为JTree添加复选框.自定义TreeCellRenderer/TreeCellEditor似乎是正确的方法.到目前为止,我在此网页中使用了CheckBoxNodeRenderer方法.它可以正常工作,除了两件事:
有没有办法做这些事情?我四处寻找带有复选框的JTrees,找不到多少.JIDE看起来不错,但在这种情况下我需要使用免费的开源软件(GPL不行,LGPL没问题).(或创建我自己的复选框树)
点击JFrame右上角的关闭(x)按钮的程序化等价物是什么?
有dispose()方法,但这不是一回事,因为JFrame可以设置为在关闭时做几个不同的事情(更不用说是否涉及WindowListener)
正当我认为我理解JLS15.12应用于varargs时,这是这个例子:
package com.example.test.reflect;
public class MethodResolutionTest2 {
public int compute(Object obj1, Object obj2) {
return 42;
}
public int compute(String s, Object... objects)
{
return 43;
}
public static void main(String[] args) {
MethodResolutionTest2 mrt2 = new MethodResolutionTest2();
System.out.println(mrt2.compute("hi", mrt2));
System.out.println(mrt2.compute("hi", new Object[]{mrt2}));
System.out.println(mrt2.compute("hi", new Object[]{mrt2, mrt2, mrt2}));
}
}
Run Code Online (Sandbox Code Playgroud)
打印出来的
42
43
43
Run Code Online (Sandbox Code Playgroud)
我理解第一行:JLS15.12表示方法解决是分阶段进行的,而第1阶段和第2阶段忽略了varargs方法,以确定是否存在兼容方法,仅当阶段1和阶段2失败时才会发生阶段3(包括变量).(参见JLS和这个问题.)compute(String s, Object... objects)如果compute(Object obj1, Object obj2)适用,总是被忽略.
但我不明白为什么43为其他两行打印.An Object[]也是一个实例Object,为什么它与varargs方法匹配?
编辑:
...还有这个
Object arg2 …Run Code Online (Sandbox Code Playgroud) 看起来有两种默认机制来扩展JTree中的文件夹节点.一种是单击节点旁边的展开/折叠图标.另一种方法是双击节点本身.
有没有办法阻止这第二种机制?我想重写双击一个节点上它确实是这样的东西(更新另一个显示器显示节点是上双击统计),并希望它不会展开/折叠树节点.(仅仅是明确的:我不想防止节点被展开/折叠,我只是想要求用户点击展开/折叠图标.)我怎样才能做到这一点?
(与这个问题有关,抛弃挥发物是否安全?,但不完全相同,因为该问题与特定实例有关)
是否有过在那里虚掷的情况下volatile是不被认为是危险的做法?
(一个特定的例子:如果声明了一个函数
void foo(long *pl);
Run Code Online (Sandbox Code Playgroud)
我必须实施
void bar(volatile long *pl);
Run Code Online (Sandbox Code Playgroud)
有()我需要执行栏的一部分来调用foo(PL),然后好像我不能得到这个作为是工作,因为假设由foo的编制()和bar的调用者的编辑制作()不兼容.)
作为推论,如果我有一个volatile变量v,我想打电话给foo(&v)别人的功能void foo(long *pl),那人告诉我这是安全的,我可以调用之前投的指针,我的直觉是要告诉他们,他们错了,因为没有办法保证,void foo(volatile long *pl)如果他们想支持使用volatile变量,他们应该更改声明.我们哪一个是正确的?
我真的很困惑:Java中的标准方法是仅在"异常"条件下抛出异常,而不是使用它们来表示迭代器结束.
示例:Effective Java,第57项("仅针对特殊情况使用例外")和JavaSpecialists新闻通讯162:
流量控制
我们永远不应该导致一个可以预防的例外.我已经看到代码而不是检查边界,假设数据是正确的,然后捕获RuntimeExceptions:
这是一个坏代码的例子(请不要像这样编码):
Run Code Online (Sandbox Code Playgroud)public class Antipattern1 { public static void main(String[] args) { try { int i = 0; while (true) { System.out.println(args[i++]); } } catch (ArrayIndexOutOfBoundsException e) { // we are done } } }
而在Python中使用这个习惯是标准的,例如StopIteration:
例外StopIteration
由迭代器的next()方法引发,表示没有其他值.这是从Exception而不是StandardError派生的,因为这在其正常应用程序中不被视为错误.
为什么它对Java不好但对Python有好处?
(注意:与其他问题不同,因为OP从未明确指定向0或-Infinity舍入)
JLS 15.17.2说整数除法向零舍入.如果我想要floor()积极除数的行为(我不关心负除数的行为),那么实现这一点的最简单方法是什么,在数值上对所有输入都是正确的?
int ifloor(int n, int d)
{
/* returns q such that n = d*q + r where 0 <= r < d
* for all integer n, d where d > 0
*
* d = 0 should have the same behavior as `n/d`
*
* nice-to-have behaviors for d < 0:
* option (a). same as above:
* returns q such that n = d*q + r …Run Code Online (Sandbox Code Playgroud) 我有一个带有dtype = object的numpy数组,我想创建一个标识哪些元素的布尔数组None.但看起来None行为不同......
a = np.array(['Duck','Duck','Duck','Goose',None,1,2,3,1,3,None,4])
print a == 'Duck'
print a == 3
print a == None
Run Code Online (Sandbox Code Playgroud)
结果
[ True True True False False False False False False False False False]
[False False False False False False False True False True False False]
False
Run Code Online (Sandbox Code Playgroud)
是否有"numpythonic"方式来获取None元素的布尔数组?我可以用
np.array([x is None for x in a])
Run Code Online (Sandbox Code Playgroud)
但这似乎应该有更好的方法.