小编Rob*_*ert的帖子

检查Python变量类型的最佳(惯用)方法是什么?

我需要知道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()功能?

python types typechecking

296
推荐指数
6
解决办法
33万
查看次数

如何使用jQuery获取表格单元格值?

我试图找出如何使用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)

jquery

205
推荐指数
5
解决办法
89万
查看次数

如何从通知点击发送参数到活动?

我可以找到一种方法从我的通知中向我的活动发送参数.

我有一个创建通知的服务.当用户点击通知时,我想用一些特殊参数打开我的主要活动.例如项目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)

notifications android bundle android-intent

193
推荐指数
7
解决办法
14万
查看次数

C#中布尔值的大小是多少?它真的需要4个字节吗?

我有两个带字节和布尔数组的结构:

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 ,只需要一点(falsetrue,01 …

c# interop

136
推荐指数
2
解决办法
2万
查看次数

operator <<应该实现为朋友还是成员函数?

这基本上就是问题,是否有"正确"的实施方式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)

其中段落是一个字符串.

c++ operator-overloading

121
推荐指数
6
解决办法
12万
查看次数

Java中的三元运算符仅评估自Java 7以来的一个表达式 - 在Java 1.6和更低版本中是不同的?

为了准备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时,三元运算符有什么变化吗?

java ternary-operator short-circuiting java-6

106
推荐指数
2
解决办法
6555
查看次数

如何从WPF中可调整大小的窗口中删除最小化和最大化?

WPF不提供允许调整大小但没有最大化或最小化按钮的窗口的功能.我想能够制作这样一个窗口,以便我可以使用可调整大小的对话框.

我知道解决方案意味着使用pinvoke,但我不知道该怎么称呼以及怎么做.一个搜索pinvoke.net的不转了,在我跳了出来,因为我需要什么什么东西,主要是我敢肯定,因为Windows窗体并提供CanMinimizeCanMaximize性能上它的窗口.

有人可以指点我或提供代码(C#首选)如何做到这一点?

wpf pinvoke user-interface resize

76
推荐指数
4
解决办法
7万
查看次数

如何创建具有透明背景的UITableViewCell

我正在尝试将a的背景颜色设置UITableViewCell为透明.但似乎没有任何效果.我内部有一些图像/按钮tableViewCell,我想让白色grouptableview背景消失,以获得图像和按钮的"浮动"效果(好像它们不在里面tableview).

知道如何实现这一目标吗?

iphone cocoa-touch uitableview

71
推荐指数
6
解决办法
7万
查看次数

在部署环境之间管理复杂的Web.Config文件

有谁知道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)

.net asp.net wcf visual-studio

53
推荐指数
3
解决办法
2万
查看次数

==与.NET中的Object.Equals(对象)

所以,当我现在是新手的比较新手时,我曾经认为这两件事是彼此的语法糖,即使用一个而不是另一个只是个人偏好.随着时间的推移,我发现即使在默认实现中,这两者也不是一回事(参见本章本章).为了进一步混淆这个问题,每个都可以单独覆盖/重载,以具有完全不同的含义.

这是一件好事,有什么区别,什么时候/为什么要使用一个而不是另一个?

.net

50
推荐指数
4
解决办法
5万
查看次数