问题列表 - 第14578页

在groovy中,有没有办法检查一个对象是否有给定的方法?

假设我有一个someObj不确定类型的对象,我想做类似的事情:

def value = someObj.someMethod()
Run Code Online (Sandbox Code Playgroud)

如果不能保证'someObj'实现该someMethod()方法,如果没有,则返回null.

在Groovy中是否有类似的东西,或者我需要将其包含在带有instanceof支票的if语句中?

groovy

41
推荐指数
2
解决办法
1万
查看次数

javascript中的三个地图实现.哪一个更好?

我为一些任务写了一个简单的地图实现.然后,出于好奇,我又写了两篇.我喜欢map1,但代码有点难以阅读.如果有人感兴趣,我会很感激简单的代码审查.

哪一个更好?你知道在javascript中实现这个的其他方法吗?

var map = function(arr, func) {
  var newarr = [];
  for (var i = 0; i < arr.length; i++) {
    newarr[i] = func(arr[i]);
  }
  return newarr;
};

var map1 = function(arr, func) {
  if (arr.length === 0) return [];
  return [func(arr[0])].concat(funcmap(arr.slice(1), func));
};

var map2 = function(arr, func) {
  var iter = function(result, i) {
    if (i === arr.length) return result;
    result.push(func(arr[i]));
    return iter(result, i+1);
  };
  return iter([], 0);
};
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑

我一般都在考虑这种功能.

例如,现在我将使用它来迭代这样:

map(['class1', 'class2', 'class3'], function(cls) …
Run Code Online (Sandbox Code Playgroud)

javascript map

4
推荐指数
2
解决办法
425
查看次数

最近宽屏(16:9)电脑显示器的趋势是程序员的正负吗?

它几乎已经达到了你不能再购买传统(4:3)显示器的程度了.几乎所有东西都是宽屏.这对于观看电影或电视很好,但它对编程有好处还是坏处?

我对这个问题的初步想法是,宽屏对程序员来说是一个净负面因素.以下是我看到的一些缺点:

空间利用率差

您无法争辩的宽屏幕的一个缺点是,它们为您获得的总像素数提供了较差的空间利用率.例如,我的ThinkPad,我只是宽屏热潮之前买的,有一个15" 运行的ThinkPad与1600×1200的15.4" 更新的原始分辨率显示器至多1680 X 1050.所以,(如果你计算一下)你在更宽(但不短)的包中获得更少的像素.使用桌面显示器,您可以根据使用的桌面空间付出代价.两个1680 x 1050显示器将占用更多的桌面而不是两个1600 x 1200显示器(假设点距相等).

更多滚动

如果将1680 x 1050显示器与1600 x 1200显示器进行比较,则会获得80个额外像素的宽度,但会减少150个像素的高度.高度降低意味着您丢失大约11行代码.你可以一次在屏幕上看到的更少,你需要做更多的滚动.这会损害生产力,可能不是很大,但却是阴险的.

宽面板的空间较小

宽屏也意味着您在编程环境中常见的宽屏幕和短屏幕空间.例如,如果使用Visual Studio,则在查看"查找结果","任务列表"或"错误列表"(我经常使用的所有内容)时,您的代码窗口将会短得多.这并不是说用宽屏获得的额外宽度的80像素永远不会有用,但我倾向于保持我的代码行短,所以看到更多的线对我来说比看到更少,更长的线更有价值.

你怎么看?

你同意/不同意吗?您现在使用一个或多个宽屏显示器进行开发吗?你在每个上运行什么分辨率?你有没有想过传统4:3显示器的高度?如果您的显示器窄一英寸但高两英寸,您会抱怨吗?

hardware multiple-monitors monitor

8
推荐指数
1
解决办法
5442
查看次数

绑定到WPF ToggleButton的IsChecked状态

我想使用WPF ToggleButton来扩展和折叠我的应用程序中的一些控件.我如何使用XAML来实现这一目标?

我想,我可以在某种程度上绑定Visibility一些控件的属性到ToggleButtonIsChecked状态,但我不知道如何做到这一点.

也许我需要给我ToggleButton一个Name,然后使用绑定ElementName?然后我需要一个ValueConverter布尔值和可见性之间的转换,对吗?我怎么能ValueConverter为此目的制作通用的?

wpf xaml binding togglebutton

24
推荐指数
2
解决办法
4万
查看次数

使用与virtualenv不同的Python版本

我有一个当前使用python 2.5.4运行的Debian系统.我得到了virtualenv正确安装,一切正常.我是否有可能使用不同版本的Python的virtualenv?

我编译了Python 2.6.2,并希望将它与一些virtualenv一起使用.是否足以覆盖二进制文件?或者我是否必须更改库中的某些内容?

python virtualenv virtualenvwrapper

997
推荐指数
22
解决办法
67万
查看次数

当一个对象需要修改另一个对象时的OOP最佳实践

(这是一个类似C的环境)假设我有两个实例对象,一个汽车和一个bodyShop.该车有一个颜色iVar和相应的加速器.bodyShop有一个名为"paintCar"的方法,它将接收一个汽车对象并改变其颜色.

至于实现,为了让bodyShop实际上能够改变汽车对象的颜色,我看到了两种方法.

  1. 使用"&"运算符传入指向汽车的指针.然后bodyShop可以告诉汽车执行一些必须改变颜色的方法,或者它可以直接使用汽车的存取器.

  2. 按值传递汽车对象,执行相同类型的操作以更改颜色,然后让方法返回具有新颜色的汽车对象.然后将原始汽车对象分配给新汽车对象.

选项1对我来说似乎更直接,但我想知道它是否符合OOP最佳实践.一般来说,对于"最大OOP","&"运算符是好还是坏?或者,也许我完全错过了一个更好的选择,可以使这个超级OOPer.请指教 :)

c oop car-analogy

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

在Haskell中返回特定类型

关于Haskell的类型系统,我有一个相当普遍的问题.我正在努力熟悉它,我有以下功能:

getN :: Num a => a
getN = 5.0 :: Double
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我收到以下错误:

Couldn't match expected type `a' against inferred type `Double'
  `a' is a rigid type variable bound by
      the type signature for `getN' at Perlin.hs:15:12
In the expression: 5.0 :: Double
In the definition of `getN': getN = 5.0 :: Double
Run Code Online (Sandbox Code Playgroud)

据我了解,该函数设置为"返回"类Num中的类型.Double是在这个类中(http://www.zvon.org/other/haskell/Outputprelude/Num_c.html),所以我原本预计在这种情况下"返回"Double是可以的.

有人可以解释一下吗?

haskell types type-systems compiler-errors typeclass

14
推荐指数
2
解决办法
2647
查看次数

FirstOrDefault行为直接在LINQ语句中

好像我可能在语法中遗漏了一些简单的东西,但是我想直接从linq语句中获取FirstOrDefault的结果,而不必先将IEnumerable存储在临时变量中.像这样的东西:

var bestCar = from c in cars
              orderby c.Price
              select first c
Run Code Online (Sandbox Code Playgroud)

我知道第一个关键字实际上并不存在,但说明了我想要做的事情.我也知道我可以在括号中包含from ... select语句并直接调用FirstOrDefault,但我认为上面的语法更清晰,更易于阅读.

linq

17
推荐指数
2
解决办法
6832
查看次数

如何在Perl中打印变量而不是文件?

如何使用Perl打印到变量?

我一直在研究一个程序,它以高度冗长的方式记录它的迭代进度......

print $loghandle $some_message;
Run Code Online (Sandbox Code Playgroud)

但是,我还想有选择地将一些消息打印到不同的文件中.当然,我可以将代码撒上......

print $loghandle $some_message
print $otherloghandle $some_message
Run Code Online (Sandbox Code Playgroud)

或者将整个业务重写为一个功能.等等.

我想要做的是在打开$ loghandle时做一些魔术,这样当我print正在进行时,我实际上只是sprintf对一个变量进行ish操作(调用它$current_iteration),这样当我做出决定时我能做点什么......

print $real_log_file $current_iteration;
print $other_real_log_file $current_iteration if($condition);
Run Code Online (Sandbox Code Playgroud)

我很确定我在某个地方见过这样的东西,但我不知道它在哪里或在哪里看.

编辑:File :: Tee在某种程度上在*nix上解决了这个问题,但我在Windows上运行.

printing perl

8
推荐指数
2
解决办法
9877
查看次数

如何修复Java中的"非法表达式启动"错误?

我在以下代码中的注释标记位置出现"非法表达式启动"错误.我该如何更正此错误?

class planetUfo {
    public static void main (String[] args) {
        // having data for counting the index
        char letters[] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        // initial data
        String[] groups = {"COMETQ", "ABSTAR"};
        String[] comets = {"HVNGAT", "USACO"};


                                               // Problem here!
        // to count the index
        private void countIndex ( String group, String comet ) {  
                                        // I get here "illegal start of an expression"



            // to have two words in the array
            char[] name = { group, comet };
            // to go …
Run Code Online (Sandbox Code Playgroud)

java

3
推荐指数
1
解决办法
6万
查看次数