我试图通过ORing两个数组让Excel成为一个数组.作为一个例子,让两个数组A1:A3是7,8,-3和B1:B3是4,-8,-8.
这应该相当简单,但似乎是这样
OR ( A1:A3 > 0 ; B1:B3 > 0 )
Run Code Online (Sandbox Code Playgroud)
返回TRUE而不是我期待的数组(TRUE, TRUE, FALSE).
当然我可以使用肮脏的技巧
(((A1:A3 > 0)*1 + (B1:B3 > 0)*1) >= 1) *1
Run Code Online (Sandbox Code Playgroud)
但谁愿意维持这一点呢?
此外,有可能搜索"CSE(Ctrl+ Shift+ Enter)公式"(http://www.mrexcel.com/articles/CSE-array-formulas-excel.php),但它看起来真的像黑魔法.
我错过了一些容易的事吗?
对于那些对它感兴趣的人来说,我正在尝试构建的实际公式当然要复杂一些.它试图计算(通过SUMPRODUCT)所有行(status == A OR status == B) AND Date = some cell.我正在寻找的OR只是我的一个数组,SUMPRODUCT并没有在单元格中定义(这太容易了).
我正在尝试创建一个帮助方法来列出Enum值中设置的所有位的名称(用于记录目的).我想要一个方法,它将返回一些变量中设置的所有枚举值的列表.在我的例子中
[Flag]
Enum HWResponse
{
None = 0x0,
Ready = 0x1,
Working = 0x2,
Error = 0x80,
}
Run Code Online (Sandbox Code Playgroud)
我喂它0x81,它应该为我提供一个IEnumerable<HWResponse>包含{Ready, Error}.
由于我没有找到更简单的方法,我尝试编写下面的代码,但我无法编译.
public static IEnumerable<T> MaskToList<T>(Enum mask)
{
if (typeof(T).IsSubclassOf(typeof(Enum)) == false)
throw new ArgumentException();
List<T> toreturn = new List<T>(100);
foreach(T curValueBit in Enum.GetValues(typeof (T)).Cast<T>())
{
Enum bit = ((Enum) curValueBit); // Here is the error
if (mask.HasFlag(bit))
toreturn.Add(curValueBit);
}
return toreturn;
}
Run Code Online (Sandbox Code Playgroud)
在这个版本的代码中,编译器抱怨它无法将T强制转换为Enum.
我做错了什么?有更好(更简单)的方法吗?我怎么能演员?
另外,我试着把方法写成
public static IEnumerable<T> MaskToList<T>(Enum mask) where T:Enum
Run Code Online (Sandbox Code Playgroud)
但Enum属于一种禁止'where'语法的特殊类型(使用C#4.0)
我没有找到一个简短的构造函数调用的引用,它会初始化调用者选择的变量.我在寻找
class AClass:
def __init__(self):
pass
instance = AClass(var1=3, var2=5)
Run Code Online (Sandbox Code Playgroud)
而不是写更重
class AClass:
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
Run Code Online (Sandbox Code Playgroud)
或者更重
instance = AClass()
instance.var1 = 3
instance.var2 = 5
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?
我正在寻找一个简短而紧凑的单行代码来从 Python 中的列表初始化字典。是否有等效于下面的两个结构?
dic = {}
for elt in list:
dic[elt.hash] = elt
Run Code Online (Sandbox Code Playgroud)
.
dic2 = {}
defaultValue = 0
for elt in list:
dic2[elt] = defaultValue
Run Code Online (Sandbox Code Playgroud)
我已经看到了Counter第二种情况的使用,但它是一个非常狭窄的情况,我正在寻找通用语法。
我希望在同一台机器上有两个线程,一个用于填充集合,另一个用于在数据可用时立即弹出数据,并在知道结束时停止.我只是不知道要使用什么样的集合......
private void DataProviderThread()
{
GlobalCollection = new SomeMagicCollection();
for (int i = 0; i < 100; i++)
{
GlobalCollection.Add(new SomeDataItem(i));
Thread.Sleep(100);
}
GlobalCollection.IHaveFinishedPopulatingThanksAndBye();
}
private void DataCruncherThread()
{
foreach (var item in GlobalCollection)
{
// Do whatever
}
// The control should exit foreach only once the data provider states that the collection is finished
}
Run Code Online (Sandbox Code Playgroud)
然后我想简单地迭代它,让Collection照顾好
IHaveFinishedPopulatingThanksAndBye(),然后干净地退出循环我无法相信C#不会在新版本中发布此版本.但它的名字是什么?
可能重复:
TSQL中的常量和包含文件
我一直在寻找与C"#include"指令等效的T-SQL.我没想到,我不知道
对于那些好奇我的动机,我正在写一组类似的查询,我发现外部化常量(来自枚举表),预计算(制作一些测试输入表)和参数变量(我正在工作的子集)很方便上).
据我所知,我不能真正使用存储过程或函数(我不喜欢用这些来污染我的数据库的想法).
c# ×2
python ×2
arrays ×1
collections ×1
dictionary ×1
enumeration ×1
enums ×1
excel ×1
generics ×1
python-3.x ×1
sql ×1
sql-server ×1
t-sql ×1