我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义
背景是:
def fn(*args):
return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)
我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?
10 and 7-2
Run Code Online (Sandbox Code Playgroud)
返回5.同样,更改和将导致或将导致功能更改.所以
10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)
会回来10.
这是合法/可靠的风格,还是有任何问题?
我有一个Outlook插件(VSTO),在Outlook表单区域我有一个ElementHost中的WPF用户控件.我有一个问题,即我的用户控件中的TextBox没有撤销功能......在某些配置中.特别是在Windows 7/Outlook 2007中,撤消(即Ctrl-Z)不起作用,即使剪切/复制等都可以正常工作.有趣的是Windows 8/Outlook 2010撤消确实有效.
TextBox XAML是:
<TextBox
Name="txtnote"
VerticalScrollBarVisibility="Auto"
SpellCheck.IsEnabled="True"
Text="Topic notes..."
TextWrapping="Wrap"
AcceptsReturn="True" />
Run Code Online (Sandbox Code Playgroud)
注意:我已尝试设置以下属性以使其工作但无济于事:IsUndoEnabled ="True"UndoLimit =" - 1"
任何人都可以建议为什么会发生这种情况以及我能做些什么来使其按预期工作?
更新2014年1月7日. 我在文本框中添加了以下KeyBinding:
<TextBox.InputBindings>
<KeyBinding Command="ApplicationCommands.Undo" Key="Z" Modifiers="Control" />
<KeyBinding Command="ApplicationCommands.Redo" Key="Y" Modifiers="Control" />
<KeyBinding Command="ApplicationCommands.Undo" Key="G" Modifiers="Alt" />
</TextBox.InputBindings>
Run Code Online (Sandbox Code Playgroud)
结果是 - Cntl-Z/Cntrl-Y仍然不起作用,但Alt-G确实有效!
我有一个类,我想在case语句中比较字符串和符号,所以我认为我只是覆盖我的类的===()方法,所有都是金.但是在case语句中永远不会调用我的===()方法.有任何想法吗?
以下是一些示例代码,以及irb会话中发生的情况:
class A
def initialize(x)
@x=x #note this isn't even required for this example
end
def ===(other)
puts "in ==="
return true
end
end
Run Code Online (Sandbox Code Playgroud)
irb(main):010:0> a = A.new("hi")
=>#
irb(main):011:0> case a
irb(main):012:1>当"hi"然后是1
irb( main):013:1> else 2
irb(main):014:1> end
=> 2
(它从不打印消息,无论如何应该总是返回true)注意理想情况下我想做一个
def ===(other)
#puts "in ==="
return @x.===(other)
end
Run Code Online (Sandbox Code Playgroud)
提前致谢.
我需要为Outlook预约项显示自定义表单而不是默认检查器表单.我想在C#中这样做.
devx上有一个很好的教程,但它使用VB,我想使用C#.所以我把代码翻译成了C#,我遇到了一个问题,我需要覆盖(被调用的)Open事件处理程序.在上面提到的tute中,他们说要在VB中执行以下操作:AppointmentItemmcAI
Private Sub tyAI_Open(ByRef Cancel As Boolean) Handles tyAI.Open
Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)
我翻译为:
private void mcAI_Open(out bool Cancel)
{
Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)
(注意我已经尝试了这个有和没有out和ref参数,并且有/没有对象作为第一个参数)
但是我们需要注册这是一个事件,所以我输入了这段代码:
mcAI.Open +=
new Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler(mcAI_Open);
Run Code Online (Sandbox Code Playgroud)
但是当我收到错误时,我无法编译它:
No overload for 'mcAI_Open' matches delegate 'Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler'
对我应该如何注册我的函数的任何想法Open的事件AppointmentItem?提前致谢.
(顺便说一句,有一个MSDN QA,它表明我的代码应该可以运行,但我仍然卡住了.)
保存约会项目(或特别是会议)时,我需要执行一些活动。
我想要的是,一旦用户填写了信息并单击“发送”,Outlook 就会执行该操作,并且我的代码会执行一次。
然而我发现,写入事件发生多次 - 至少两次,有时更多(例如在更新中)。
这对我来说是一个问题,因为我有一个对象需要在序列化之前进行更新,并且我不想多次进行更新和序列化。
以前有人遇到过这个问题吗?有没有比 Appointmentitem.write 更好的方法?
当预约实例打开时,我需要获得会议系列的主要约会.
我尝试了以下(currentAppointment变量的类型为AppointmentItem)
DateTime sd = currentAppointment.GetRecurrencePattern().PatternStartDate;
DateTime st = currentAppointment.GetRecurrencePattern().StartTime;
AppointmentItem ai = currentAppointment.GetRecurrencePattern().GetOccurrence(sd+st.TimeOfDay);
Run Code Online (Sandbox Code Playgroud)
然而,虽然这让我获得了该系列中的第一个约会,但它有一个复制状态为olApptOccurrence.
我怎样才能获得对olApptMaster的引用 - 即会议系列?