我有这样的情况:正则表达式是这样的:
^b?A+b?$
因此b 可以在字符串的开头匹配0或1次,并且A 必须匹配一次或多次.再次b 可以在字符串结尾处匹配0或1次.
现在我想以这样的方式修改这个正则表达式,它可以匹配b字符串的开头或结尾,但不能同时匹配.
我该怎么做呢?
让我们假设一个特定的异常" SomeException"是异常堆栈的一部分,
所以让我们假设ex.InnerException.InnerException.InnerException是" SomeException" 的类型
C#中是否有任何内置API会尝试在异常堆栈中找到给定的异常类型?
例:
SomeException someExp = exp.LocateExceptionInStack(typeof(SomeException));
Run Code Online (Sandbox Code Playgroud) 我想使用StreamReader和StreamWriter通过TCPClient.NetworkStream接收和发送数据.代码如下所示:
客户端代码:
using (TcpClient client = new TcpClient())
{
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9001);
client.Connect(localEndPoint);
client.NoDelay = true;
using(NetworkStream stream = client.GetStream())
{
using (StreamWriter writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
using (StreamReader reader = new StreamReader(stream))
{
string message = "Client says: Hello";
writer.WriteLine(message);
// If I comment the line below, the server receives the first message
// otherwise it keeps waiting for data
string response = reader.ReadToEnd();
Console.WriteLine(response);
}
;
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:如果我评论reader.ReadToEnd(); 然后服务器接收消息,否则服务器继续等待来自客户端的数据.ReadToEnd是问题吗? …
Haskell有一个takeWhile功能:
Prelude> takeWhile odd [1,3,5,7,8,9]
[1,3,5,7]
Run Code Online (Sandbox Code Playgroud)
只要应用谓词函数结果,它就会从列表中"获取"元素True.它变成了False,它停止了.
我们该如何实施呢?
这是我提出的Haskell递归方法:
takewhile::(a->Bool)->[a]->[a]
takewhile _ [] = []
takewhile f (x:xs) | f x == True = x : takewhile f xs
| otherwise = []
Run Code Online (Sandbox Code Playgroud)
只要谓词f x是True,它就会一直调用自身,否则它会返回一个空列表而不会调用它自己.
我可以为JavaScript提出以下实现.它有点冗长,并调用定义另一个函数来传递中间结果:
function takeWhile(f, xs) {
return take(f, xs, [])
}
function take(f, xs, arr) {
if(!xs || xs.length === 0) {
return arr
}
x = xs.shift()
if(f(x)) {
arr.push(x)
return take(f, xs, arr)
} …Run Code Online (Sandbox Code Playgroud) 我遇到了一个我的XBAP(WPF浏览器应用程序)项目的问题:
这里我有两个列表框:
alt text http://i44.tinypic.com/117bpj4.jpg
现在,当我单击第一个列表框中的项目(在左侧)时,前景会变为白色,如果选择了另一个项目,则会变回黑色.
对于第二个列表框(右侧)中的项目,当我单击该项目时,前景保持黑色.这是因为文本内容本身包含在Expander控件中:
alt text http://i39.tinypic.com/124vn6u.jpg
现在,如何使Expander控件前景颜色与选择列表框项目/选择更改时的行为类似?是否有任何依赖属性可用于实现此目的?
注意:我希望第二个列表框(右)的行为与前景颜色的第一个(左)完全相似.
我希望能够表示自定义类型的元组。我想出的内容如下:
type Name = String
data DataType a = DataType a deriving Show
data Val a = Single (DataType a) | List [(DataType a)] deriving Show
data State a = State [(Name,(Val a))] deriving Show
append :: (Name, (Val a)) -> State a -> State a
append nv (State st) = State (st ++ [nv])
Run Code Online (Sandbox Code Playgroud)
现在的问题是 State 不能是 [("NUM1",Single (DataType 1)), ("STR1",Single (DataType "Hello"))]。我希望能够执行以下操作:
*Main> num1 = Single (DataType 1)
*Main> num1
Single (DataType 1)
*Main> str1 = Single (DataType …Run Code Online (Sandbox Code Playgroud) Haskell新手; 我希望能够宣布Val它可以是IntVal, StringVal FloatVal和List它可以是StringList, IntList, FloatList,它的元素是(相应的)StringVal, IntVal and FloatVal.我到目前为止的尝试:
data Val = IntVal Int
| FloatVal Float
| StringVal String deriving Show
data List = IntList [(IntVal Int)]
| FloatList [(FloatVal Float)]
| StringList [(StringVal String)] deriving Show
Run Code Online (Sandbox Code Playgroud)
失败并出现错误:
Not in scope: type constructor or class ‘IntVal’
A data constructor of that name is in scope; did you mean DataKinds?
data List = IntList [(IntVal Int)]
... (similarly for StringVal, …Run Code Online (Sandbox Code Playgroud) 如果我们在 GO 中有以下方法:
GetCustomer(id string) (*Customer, error)
Run Code Online (Sandbox Code Playgroud)
数据库中可能不存在给定 ID 的客户。当没有找到客户时,代码可以
return nil, nil
Run Code Online (Sandbox Code Playgroud)
这在 Go 中被认为是糟糕的编码实践吗?或者惯用的 Go 代码看起来像
return nil, errCustomerNotFound
Run Code Online (Sandbox Code Playgroud)
我在第二种方法中看到的问题是您最终会检查此特定错误并单独处理它。
Go 源代码或库中是否有出现这种情况并且首选其中一种方法的示例?
更新
如果return nil, nil被认为是不惯用的。我想知道为什么在这种情况下这是真的?由于 *Customer 是一个指针,我想返回 nil 来表示没有值