小编out*_*tis的帖子

检查lambda表达式中的属性是否为null

我有一个对象列表,我试图绑定到列表视图.我按两个属性排序.存在一些问题,即某些记录可能没有其中一个属性.这导致错误.我希望它仍然绑定具有该属性的记录.

IEnumerable<ERec> list = retailerList.Cast<ERec>();
lvwRetailStores.DataSource = list.OrderByDescending(r => r.Properties["RS_Partner Type"].ToString())
                                 .ThenBy(r => r.Properties["RS_Title"].ToString());
Run Code Online (Sandbox Code Playgroud)

c# lambda listview

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

是否有任何c/c ++编译器可以警告(或给出错误)或枚举转换为int?

清理使用硬编码整数文字而不是枚举的旧c/c ++代码,找到功能声明已被正确重构但不是正文的地方是很繁琐的.例如

enum important {
  little = 1,
  abit = 2,
  much = 3
};

void blah(int e)
{
  // magic stuff here
}

void boing(int e) { ... }

void guck(important e)
{
  switch (e) {
    case 3:  // this would be a good place for a warning
      blah(e);  // and this
      break;
    default:
      boing((int)e); // but this is OK (although imperfect and a warning would be acceptable)
      break;
  }
}
Run Code Online (Sandbox Code Playgroud)

注释/修改每个枚举类型或通过代码搜索它们也是相当多的工作,因为存在非常多的不同枚举,因此这不是优选的,但可以是可接受的解决方案.

我不需要它在我们的任何主编译器或其他工具(主要是gcc)或平台(大多数),手动运行几次就足够了,但我更喜欢不太深奥或昂贵的东西.

c c++ enums warnings

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

关于Von Neumann Arcitechture图的一些疑问

替代文字

好吧,我无法理解上面的Von Neumann架构图[引自维基百科],甚至不确定它是否正确.我有一些明显的疑虑 -

ALU如何与内存通信?这不应该是CU的工作吗?

累加器如何成为ALU的一部分?

而且,累加器的工作究竟是什么?

cpu computer-architecture von-neumann

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

如果没有IB中的移位修改器,如何轻松设置使用需要移位的字符的菜单项等效键?

设置:

在Interface Builder 3.2.5中,当您使用使用shift键输入的字符(例如问号)设置菜单项的等效键时,等效键设置为同一键上的未移位字符修饰符作为键等价的一部分.例如,尝试设置密钥等效.到Command-Question Mark将其设置为Command-Shift-Forward Slash.

各种系统US和Dvorak布局,Unicode Hex输入,英国和加拿大英语布局以及我的自定义Dvorak布局都表现出这种行为.

问题:

如何将等值设置为需要使用shift键而不包含shift修饰符作为等效的一部分的角色?

解决方法:

可以通过切换到键盘布局来完成,您可以在不使用shift的情况下键入所需的字符.也可以通过编辑包含菜单的nib文件来完成.然而,这些都没有我想要的轻松程度.它可以通过编程方式完成,但(为了这个问题的目的)我只对如何在IB中完成它感兴趣.


到目前为止,Apple的文档和网络搜索都没有发现.如果有任何在线资源回答此问题,请告诉我.

macos keyboard-shortcuts interface-builder

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

mysql交叉连接,但没有重复对?

假设我的表中有以下行

表行

id
63
64
65
66
67
68

如果我运行以下查询,我会得到30行.

SELECT r1.id, r2,id 
  FROM rows AS r1 
    CROSS JOIN rows AS r2 
  WHERE r1.id!=r2.id
Run Code Online (Sandbox Code Playgroud)

结果:

63  64
65  64
66  64
67  64
68  64
64  63
65  63
66  63
67  63
68  63
63  65
64  65
66  65
67  65
68  65
63  66
64  66
65  66
67  66
68  66
63  67
64  67
65  67
66  67
68  67
63  68
64  68
65 …

mysql cross-join

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

你怎么知道是否在Objective C中调用超类方法

Class Child扩展Parent.父实现协议C,它具有可选方法,包括-(void)d.孩子有执行-d; 应该调用[super d]吗?

换句话说,[super d]当且仅当某些内容会响应时,我会编写什么代码来调用?假设我不控制Parent的实现; 它可能随时改变.

这是我想到的所有方法.我目前正在使用4号.

显然是明智的答案1:

[super d]; // Delete this line if a runtime exception occurs when you try it
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为Parent可能会动态实现-d,因此当您测试它而不是在字段中时,它会起作用.或者Parent的实现可能会更改,以便此测试的结果不再正确.

显然是明智的回答2:

if ([super respondsToSelector:_cmd])
    [super d];
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为NSObject的-respondsToSelector实现将在Child中找到实现并在所有情况下返回YES.

显然是明智的答案3:

if ([[self superclass] instancesRespondToSelector:_cmd])
    [super d];
Run Code Online (Sandbox Code Playgroud)

当且仅当超类知道它总是实现-d时,这是有效的; 如果实例动态确定是否存在此方法,则此方法将不起作用.优于1,因为它将在运行时获取对Parent实现的静态更改.

显然是明智的回答4:

@try
{
    [super d];
}
@catch (NSException *exception)
{
    NSString *templateReason = [NSString stringWithFormat:
                                @"-[%@ %@]: unrecognized selector sent to instance %p"
                                ,NSStringFromClass([self superclass])
                                ,NSStringFromSelector(_cmd)
                                ,self];
    if (![exception.reason isEqualToString:templateReason])
        @throw …
Run Code Online (Sandbox Code Playgroud)

objective-c super respondstoselector

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

在干草堆找到针,针是一排针

我有一个函数,它接受一个字符串(haystack)和一个字符串数组(针),如果至少有一个针是大海捞针的子串,则返回true.编写它并不需要花费太多时间或精力,但我想知道是否有PHP功能已经完成了.

function strstr_array_needle($haystack, $arrayNeedles){
    foreach($arrayNeedles as $needle){
        if(strstr($haystack, $needle)) return true;
    }
    return false;    
}
Run Code Online (Sandbox Code Playgroud)

php

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

为什么在数组元素发生更改时,按值分配给数组元素的变量(在先前的引用分配之后)会发生变化?

当我运行代码打击时:

$var[0] = 'a';
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 
Run Code Online (Sandbox Code Playgroud)

输出是:

array(1) { [0]=> string(1) "a" }
Run Code Online (Sandbox Code Playgroud)

当我添加一行如下:

$var[0] = 'a';
$foo = & $var[0]; # added line
$tmp = $var;
$var[0] = 'b';
var_dump($tmp); 
Run Code Online (Sandbox Code Playgroud)

输出变为:

array(1) { [0]=> &string(1) "b" }
Run Code Online (Sandbox Code Playgroud)

如果我$foo通过引用一个数组的元素来赋值变量$var[0],那么$tmp按值赋值给数组的变量$var是否会改变?为什么会这样?

php arrays reference

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

lxml中`etree.fromstring()`和`etree.XML()`之间的功能区别是什么?

lxml提供了一些不同的函数来解析字符串.其中的两个,etree.fromstring()并且etree.XML(),看起来非常相似.前者的文档字符串表示它用于解析"字符串",而后者表示"字符串常量".另外,XML()文档字符串说明:

此函数可用于在Python代码中嵌入"XML文字",[...]

这些功能之间的功能区别是什么?应该何时使用另一个?

python lxml

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

确定是否可以通过重复删除给定长度且总和为给定值的连续子数组来使数组为空

给定一个 array A,您可以重复删除长度等于其k总和的任何连续子数组tar。通过此过程输出是否A可以清空。

A是一个整数数组,k是一个正整数,tar是一个整数。

例如,A=[1,2,3,4];k=2;tar=5 然后您可以删除[2,3]fromA使其变为[1,4]。然后你[1,4]A;中删除 它变得空了。因此,算法应该输出True

目前我已经找到了一个O(n^2/k*comb(n/k,k))算法。还有更好的吗?

我的算法

首先使用dp,判断是否A[i:j]可以为空,然后枚举最后删除的子数组的所有元素,及时O(comb((j-i)/k, k))

python3的示例代码,当k3

from functools import lru_cache
from itertools import accumulate

def solve(A, k, tar):
    # only works when k = 3
    assert k==3
    presum = list(accumulate(A, initial=0))

    @lru_cache(None)
    def judge(i, j):
        """ 
        find if …
Run Code Online (Sandbox Code Playgroud)

algorithm

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