我需要知道Python中的变量是字符串还是字典.以下代码有什么问题吗?
if type(x) == type(str()):
do_something_with_a_string(x)
elif type(x) == type(dict()):
do_somethting_with_a_dict(x)
else:
raise ValueError
Run Code Online (Sandbox Code Playgroud)
更新:我接受了avisser的回答(但如果有人解释为什么isinstance更喜欢,我会改变主意type(x) is).
但由于nakedfanatic提醒我,这是经常清洁剂使用的字典(作为case语句)比如果/ elif的/其他系列.
让我详细说明我的用例.如果变量是一个字符串,我需要将它放在一个列表中.如果它是一个字典,我需要一个唯一值的列表.这是我想出的:
def value_list(x):
cases = {str: lambda t: [t],
dict: lambda t: list(set(t.values()))}
try:
return cases[type(x)](x)
except KeyError:
return None
Run Code Online (Sandbox Code Playgroud)
如果isinstance是首选,你会怎么写这个value_list()功能?
我试图找出如何使用jQuery获取每行的表格单元格的值.
我的表看起来像这样:
<table id="mytable">
<tr>
<th>Customer Id</th>
<th>Result</th>
</tr>
<tr>
<td>123</td>
<td></td>
</tr>
<tr>
<td>456</td>
<td></td>
</tr>
<tr>
<td>789</td>
<td></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我基本上想循环遍历表,并获取Customer Id每行的列值.
在下面的代码中,我已经知道我需要这样做才能让它循环遍历每一行,但我不知道如何获取行中第一个单元格的值.
$('#mytable tr').each(function() {
var cutomerId =
}
Run Code Online (Sandbox Code Playgroud) 我可以找到一种方法从我的通知中向我的活动发送参数.
我有一个创建通知的服务.当用户点击通知时,我想用一些特殊参数打开我的主要活动.例如项目ID,因此我的活动可以加载并呈现特殊项目详细信息视图.更具体地说,我正在下载一个文件,当下载文件时,我希望通知有一个意图,当点击它时,它会以特殊模式打开我的活动.我试图使用putExtra我的意图,但似乎无法提取它,所以我认为我做错了.
我的服务中创建通知的代码:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Run Code Online (Sandbox Code Playgroud)
我的Activity中的代码尝试从通知中获取额外参数:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + …Run Code Online (Sandbox Code Playgroud) 我有两个带字节和布尔数组的结构:
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct1
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] values;
}
[StructLayout(LayoutKind.Sequential, Pack = 4)]
struct struct2
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public bool[] values;
}
Run Code Online (Sandbox Code Playgroud)
以下代码:
class main
{
public static void Main()
{
Console.WriteLine("sizeof array of bytes: "+Marshal.SizeOf(typeof(struct1)));
Console.WriteLine("sizeof array of bools: " + Marshal.SizeOf(typeof(struct2)));
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我以下输出:
sizeof array of bytes: 3
sizeof array of bools: 12
Run Code Online (Sandbox Code Playgroud)
似乎boolean需要4个字节的存储空间.理想情况下boolean ,只需要一点(false或true,0或1 …
这基本上就是问题,是否有"正确"的实施方式operator<<?读这个我可以看到类似的东西:
friend bool operator<<(obj const& lhs, obj const& rhs);
Run Code Online (Sandbox Code Playgroud)
喜欢这样的东西
ostream& operator<<(obj const& rhs);
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么要使用其中一个.
我的个人案例是:
friend ostream & operator<<(ostream &os, const Paragraph& p) {
return os << p.to_str();
}
Run Code Online (Sandbox Code Playgroud)
但我可能会这样做:
ostream & operator<<(ostream &os) {
return os << paragraph;
}
Run Code Online (Sandbox Code Playgroud)
我应该根据这个决定做出什么理由?
注意:
Paragraph::to_str = (return paragraph)
Run Code Online (Sandbox Code Playgroud)
其中段落是一个字符串.
为了准备Oracle认证助理Java SE 8程序员1考试,我在官方学习指南中看到了关于三元表达的以下段落:
三元表达式评估
从Java 7开始,将仅在运行时评估三元运算符的右侧表达式之一.以类似于短路运算符的方式,如果三元运算符中的两个右手表达式之一执行副作用,则可能不会在运行时应用它.让我们用以下例子来说明这个原则:[...]
它表示只评估两个表达式中的一个,演示如下:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Run Code Online (Sandbox Code Playgroud)
在这里,只有y增量,但z没有,正如您所期望的那样.
我绊倒的是段落的开头(标记为黄色),其中显示"从Java 7开始,......".我用Java 1.6测试了相同的代码,但是我找不到行为上的差异.我希望Java 1.6只根据段落中给出的信息来评估这两个表达式.有没有人知道他们想用"从Java 7开始......"这么说?
编辑:为了避免混淆:归结为这个问题,因为他们编写了"从Java 7开始",从Java 6切换到Java 7时,三元运算符有什么变化吗?
WPF不提供允许调整大小但没有最大化或最小化按钮的窗口的功能.我想能够制作这样一个窗口,以便我可以使用可调整大小的对话框.
我知道解决方案意味着使用pinvoke,但我不知道该怎么称呼以及怎么做.一个搜索pinvoke.net的不转了,在我跳了出来,因为我需要什么什么东西,主要是我敢肯定,因为Windows窗体并提供CanMinimize和CanMaximize性能上它的窗口.
有人可以指点我或提供代码(C#首选)如何做到这一点?
我正在尝试将a的背景颜色设置UITableViewCell为透明.但似乎没有任何效果.我内部有一些图像/按钮tableViewCell,我想让白色grouptableview背景消失,以获得图像和按钮的"浮动"效果(好像它们不在里面tableview).
知道如何实现这一目标吗?
有谁知道Web.Config在不同的构建/部署环境之间管理文件的任何好的工具/实用程序?
例如,我有一个WCF项目,在开发中我不想启用SSL,但我确实希望它在生产中启用.我想要不同的日志记录设置,不同的数据库连接字符串,不同的错误处理,不同的文件路径...甚至一些不同的Unity框架绑定(连接模拟单元测试而不是用于部署的真实对象).
维护单个副本Web.Config是一件痛苦的事,因为添加新的Web服务意味着编辑多个文件并使它们保持同步.
我也注意到,如果你Web.Config手工捣乱太多,如果你尝试使用"添加项目"向导,比如为WCF添加一个新的Web服务,Visual Studio将会窒息,因为它必须修改Web .Config添加端点,nd不能解析它.所以我必须小心不要使现有的Web.Config无效.
我还考虑过使用一些正则表达式进行替换,只是Web.Config在预构建命令中构建一个新的.这似乎是迄今为止最好的选择......
还有其他想法吗?看起来这应该是一个非常普遍的问题,因为Web.Config在开发和生产部署之间可能永远不会是相同的.
更新:
我决定编写一个快速控制台应用程序,它将获取给定目录中的所有xml文件并将它们合并为一个,并且仅包含基于名称的某些文件.
所以我可以在一个目录中:
WebConfig_All
<configuration>
<configSections>
...
</configSections>
<system.web>
...
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
connectionStrings_Debug
<configuration>
<connectionStrings>
<add name="connstr" connectionString="...dev..." />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
connectionStrings_Release
<configuration>
<connectionStrings>
<add name="connstr" connectionString="...prod..." />
</connectionStrings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后运行我的命令行工具,并传入配置(Debug,Release,custom ...)并将合并所有以_All" or_ <configuration>` 结尾的文件.
所以现在我将80%的Web.Config放在一个WebConfig_All文件中,20%的自定义内容放在每个构建配置的单独文件中.然后,我可以将我的命令行工具作为VisualStudio中的预构建任务运行,或者从NAnt运行,或者在我想要的任何地方运行...
我还使我的XML合并逻辑足以处理以下内容:
<x>
<y a="1">
<z a="1"/>
</y>
</x>
Run Code Online (Sandbox Code Playgroud)
合并
<x>
<y a="1">
<z a="2"/>
</y>
<y a="2"/>
</x>
Run Code Online (Sandbox Code Playgroud)
结果是:
<x>
<y a="1"> …Run Code Online (Sandbox Code Playgroud)