问题列表 - 第162092页

扩展List <T>并违反开放/封闭原则

我刚刚在我的一个类中创建了以下方法

public static bool Assimilate(this List<Card> first, List<Card> second)
{
    // Trivial
    if (first.Count == 0 || second.Count == 0)
    {
        return false;
    }

    // Sort the lists, so I can do a binarySearch
    first.Sort();
    second.Sort();

    // Copia only the new elements
    int index;
    for (int i = 0; i < second.Count; i++)
    {
        index = first.BinarySearch(second[i]);
        if (index < 0)
        {
            first.Insert(~index, second[i]);
        }
    }

    // Edit
    second = null;

    return true;
}
Run Code Online (Sandbox Code Playgroud)

我的一个朋友,审查我的代码,说我不应该创建'扩展List类'的方法,因为这违反了开放/封闭原则.如果我想扩展类List,我应该创建一个继承自List的新类,并在该新类中实现我的"merge"方法.他是对的吗?扩展List类违反了开放/封闭原则?

c# list open-closed-principle

6
推荐指数
1
解决办法
599
查看次数

带有autonumber列的C#SQL create table

如何从SQL命令创建一个具有自动编号或自动增量ID的表?

 SqlCommand com 
   = new SqlCommand("create table VeryCoolTable(\"Name\" nvarchar(50) 
      ,id AUTONUMBER)", con);
Run Code Online (Sandbox Code Playgroud)

计数器无法识别,我收到错误.

c# sql

2
推荐指数
1
解决办法
4933
查看次数

为什么不能将所有函数参数声明为final?

好的,所以我理解为什么我们应该从这个问题宣布论证是最终的,但我不明白为什么我们不应该...

由于Java总是使用pass by value,这意味着我们不能通过给定的参数返回一个新值,我们只能覆盖它,并使参数无用,因为我们不使用传递的值...

Java中非最终方法参数的唯一好处是您不必创建参数类型的局部变量吗?

PS这个问题是由... PMD的规则引发的MethodArgumentCouldBeFinal

java oop pmd

7
推荐指数
1
解决办法
615
查看次数

UITableView cellForRowAtIndexPath被提前调用

我有一个UITableView在第一次调用时加载其数组项目.但是,当我刷新tableview时它会崩溃,因为委托方法cellForRowAtIndexPath被提前调用.我有一个整数,表示我的主数据数组的索引,并在我的刷新按钮中重置为0.然而它崩溃是因为它试图在重置之前重新加载数据.我通常会使用indexPath.row作为我的索引,但是数组很复杂,而indexPath.row与我想要为每个单元格显示的内容不匹配.下面是一些代码,任何帮助表示赞赏.

当我下拉刷新AND viewDidLoad以准备数据时,会调用此方法

- (IBAction)refresh:(id)sender {
itemIndexer = 0;
[sender beginRefreshing];
[self loadData];
}
Run Code Online (Sandbox Code Playgroud)

我的loadData方法的一部分

-(void) loadData {
dispatch_queue_t backgroundQueue = dispatch_queue_create("com.Foo.myqueue", 0);
dispatch_queue_t mainQueue = dispatch_get_main_queue();

dispatch_async(backgroundQueue, ^{

   [self downloadData];

    dispatch_async(mainQueue, ^{
            [self.tableView reloadData];
            [_rcRefresh endRefreshing];
    });
});
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad中我调用最初加载tableview:

[self refresh:_rcRefresh];
Run Code Online (Sandbox Code Playgroud)

我得到一个超出数组错误范围的索引.我使用断点来确定原因,原因很简单,因为刷新没有被调用,否则itemIndexer将被设置为0.而不是它的数字大于数组1.如果它真的有必要我可以发布cellForRowAtIndexPath但是我不确定你是否需要它,如果它在第一次调用时工作.因此,总结对tableview的第一次调用是有效的,并且数据加载正常,但刷新会导致索引超出数组的边界,就像从不调用refresh:一样.

objective-c uitableview nsarray ios

0
推荐指数
1
解决办法
1854
查看次数

导致崩溃转储的Java错误的解决方法

我开发的一个程序偶尔会因为这个错误而崩溃JVM:http://bugs.java.com/bugdatabase/view_bug.do?video_id = 8029516.遗憾的是,Oracle尚未解决该漏洞,并且错误报告称没有已知的解决方法.

我试图通过在KeyWatcher线程中调用.register(sWatchService,eventKinds)来修改bug报告中的示例代码,方法是将所有挂起的注册请求添加到我在KeyWatcher线程中循环但仍在崩溃的列表中.我猜这与sWatchService上的同步效果相同(就像尝试过的bug报告的提交者一样).

你能想出办法解决这个问题吗?

java windows multithreading nio crash-dumps

8
推荐指数
1
解决办法
561
查看次数

在python中提供默认值的最惯用方法?

如果 Python 函数None在参数中接收,则许多讨论和 SO 搜索都无法最终回答提供默认值的最佳/最安全/最 Pythonic 方式的问题。这是专门针对datetime参数提出的,以防万一,但理想情况下,我们将我们的方法标准化为所有参数类型。

以下是两种不断出现的“正确”方法:

  1. myval if myval else defaultval
  2. myval or defaultval

它们在功能上是否相同,或者两者之间是否存在细微差别?我非常喜欢第二个选项的简洁明了,但第一个选项的拥护者说它并不总是安全的。任何来自比我更多 Python 经验的人(例如几乎任何人)的任何指导都将不胜感激。

python

6
推荐指数
1
解决办法
1753
查看次数

如何在单击时为 div 提供悬停和活动状态

我有一个黑色的 div,当我将鼠标悬停在它上面时,它会变成绿色。单击时,我也希望它保持绿色。

正常状态:黑色

悬停状态:绿色

活动状态:绿色

当它处于活动状态时(green),我想将鼠标悬停在它上面,这使 div 再次变黑。

我似乎无法让这个活动状态工作和相反。

提前致谢!

这是我的小提琴:链接

html javascript css jquery

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

WebView shouldOverrideUrlLoading()未调用无效链接

HTML文件中有两种类型的链接:

(1) A normal link like http://www.bbb.com/q?type=normal
(2) A short link like /q?type=short.
Run Code Online (Sandbox Code Playgroud)

对于第一种,只需加载网址.对于第二种,我应该在加载URL之前使用固定地址(如http://www.abc.com).

我试图通过覆盖WebViewClient中的shouldOverrideUrlLoading()函数来做到这一点.但是,不会为第二种类型的链接调用此函数.我尝试将" http://www.abc.com " 添加到HTML文件中的第二种类型的链接.然后当我点击第二种链接时,会调用该函数.

我认为发生的事情是WebView将首先检查链接是否是有效的URL.只有它有效才会调用该函数.我对吗?我怎么解决这个问题?提前致谢.

        contentWebView = new WebView(context);

        webViewClient = new WebViewClient() {
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // String not in Logger.
                Log.d(TAG, "Here!");
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                context.startActivity(intent);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                if …
Run Code Online (Sandbox Code Playgroud)

android android-webview

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

如何使用TypeScript创建shell可执行节点文件

通常在我刚刚放入的节点文件中

#!/usr/bin/env node 
Run Code Online (Sandbox Code Playgroud)

在顶部并使其可执行以创建可以从bash终端运行的文件.但是,如果我在Typescript文件中这样做,编译器会说"错误TS1001:意外字符"#""并拒绝编译它.那么如何使用Typescript创建一个shell可执行节点文件呢?

bash command-line-interface node.js typescript

16
推荐指数
4
解决办法
6895
查看次数

Rails ActiveRecord 处理不是主键的 id 列

努力使用 ActiveRecord 自动分配 :id 属性作为主键,即使它是一个单独的列。

Table - legacy-table

    id - int
    pk_id - int (primary key)
    name - varchar2
    info - varchar2
Run Code Online (Sandbox Code Playgroud)

模型

class LegacyModel < ActiveRecord::Base
  self.table_name = 'legacy-table'
  self.primary_key = 'pk_id'
  default_scope {order(:name => :asc)}
  alias_attribute :other_id, :id

end
Run Code Online (Sandbox Code Playgroud)

我不关心 ActiveRecord 自动将主键 (pk_id) 分配给 :id 属性,但是我失去了对实际 id 列的所有访问权限。尝试使用别名只是让我回到主键。

然而,对此问题的一个警告是,从视图中我可以使用 @legacymodel[:id] 访问 id 列。但再次调用 @legacymodel.id 时,我得到了 pk_id 列的值。我想要的是能够调用 @legacymodel.other_id 并让它指向 id 列。相反,@legacymodel.service_id、@legacymodel.id 和 @legacymodel.pk_id 都指向同一列 pk_id

请注意,这是一个遗留数据库,修改列是不可能的。我正在使用 Rails 4 和 MySql。

有没有办法解决这个问题?为什么@legacymodel[:id] 给我的结果与@legacymodel.id 不同?

mysql ruby-on-rails primary-key rails-activerecord

5
推荐指数
2
解决办法
2809
查看次数