AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

全部问题(coding)

Martin Hope
Maxi mini
Asked: 2025-04-30 22:34:26 +0800 CST

如何对从模板基类派生的类的模板设置条件,其中模板参数由派生类提供?

  • 7

我有一个采用模板 size_t 参数的基类和 2 个派生类,将模板参数提供给基类​​。

template<size_t N>
class BaseClass
{
  size_t value = N;
};

class Derived1 : public BaseClass<1>
{};

class Derived2 : public BaseClass<2>
{};

现在我想在从 Baseclass 派生的任何类上创建一个模板函数。所以我想在通用类 T 上创建一个模板,并使用 std::is_base_of_v(...) 的要求来确保 T 是一个 BaseClass。

给出父类时的问题我还需要精确存储在 T 中的 size_t 模板参数。

我最终得到以下结果:

template<class T>
  requires std::is_base_of_v<BaseClass<T.value>, T>
void
function(T arg) {};

显然这不能编译,因为 T 是一个通用类并且不包含属性值,我发现解决这个问题的唯一方法是向函数添加另一个 size_t 模板参数并在 BaseCLass 中使用它:

template<class T, size_t N>
  requires std::is_base_of_v<BaseClass<N>, T>
void
function(T arg) {};

这(应该)可行,但我对这个解决方案不太满意,因为最终我得到了一个冗余的 N,我必须手动将它赋给函数模板以及已经保存了该值的派生类。有什么办法可以解决这个问题吗?

c++
  • 1 个回答
  • 39 Views
Martin Hope
scader
Asked: 2025-04-30 22:31:36 +0800 CST

使用 Vue 组合脚本设置在生命周期钩子中访问 Vue 实例

  • 7

我需要访问$optionsvue 实例的属性,但getCurrentInstance().$options尚未定义。

<script setup>
console.log(getCurrentInstance().$options) // undefined
</script>
vue.js
  • 1 个回答
  • 24 Views
Martin Hope
Burak AkşamYatmazSabahKalkmaz
Asked: 2025-04-30 19:12:09 +0800 CST

Flutter Firebase Auth - 当 currentUser 返回 null 时可以使用 reload 方法吗?

  • 5

我在使用 Flutter 开发的移动应用中添加了 Firebase Auth 服务的登录功能。但是,当用户登录后打开应用时,有时会被引导到登录页面而不是主页,因为该currentUser字段可能返回 null。

我在网上搜索了一下,发现authStateChanges可以用。这让我有点担心,因为我觉得它会占用太多网络流量。

使用该reload方法能解决我遇到的问题吗?

这是我的代码,目前运行不正确:

final currentUser = FirebaseAuth.instance.currentUser; // sometimes return null

if (currentUser == null) {
  _navigateToLogin();
} else {
  _navigateToHome();
}

解决方案的建议代码:

FirebaseAuth.instance.authStateChanges().listen((User? user) {
  if (user == null) {
    _navigateToLogin();
  } else {
    _navigateToHome();
  }
});

我想要做的事情:

var user = FirebaseAuth.instance.currentUser;

await user?.reload();
user = FirebaseAuth.instance.currentUser;

if (user == null) {
  await _navigateToLogin();
} else {
  await _navigateToHome();
}

我尝试了一下我想要的代码,没有发现任何错误,但我担心是否会再次遇到类似的问题。所以我想问一下。

  • 2 个回答
  • 40 Views
Martin Hope
José
Asked: 2025-04-30 18:55:50 +0800 CST

如何在 ggplot2 中用另一种颜色填充曲线的增加部分?[重复]

  • 5
这个问题已经有答案了:
无法找到在 R 中的线图中为月份着色的解决方案 (2 个答案)
12 小时前关闭。

在绘制红色曲线的增加部分时,有没有办法使用另一种颜色,我的意思是,我想从青色点开始更改颜色,即增加的部分,只是为了说明它是供给曲线。

供给曲线

我提供复制的代码:

library("tidyverse")
library("mosaic")
library("ggrepel")
library("fontawesome")

mc_cc<-function(x){3*x^2-8*x+10}
ac_cc<-function(x){x^2-4*x+10+10/x}
atc_cc<-function(x){x^2-4*x+10}

ggplot(data.frame(x=c(0,11)), aes(x=x))+
stat_function(fun=mc_cc, geom="line", size=2, color = "red")+
geom_label(aes(x=4.3,y=mc_cc(4.1)), color = "red", label="CMg(q)", size = 5)+
stat_function(fun=ac_cc, geom="line", size=2, color = "blue")+
geom_label(aes(x=4.6,y=ac_cc(5)), color = "blue", label = "CTMe(q)", size = 5)+
stat_function(fun=atc_cc, geom="line", size=2, color = "deepskyblue")+
geom_label(aes(x=4.6,y=atc_cc(4.5)), color = "deepskyblue", label = "CVMe(q)", size = 5)+
geom_segment(x=0, xend=2, y=6.1, yend=6.1, size=1, linetype="longdash", color = "cyan")+
geom_segment(x=3.3, xend=3.3, y=0, yend=16, size=1, linetype="dotted")+
geom_segment(x=0, xend=3.3, y=16, yend=16, size=1, linetype="dotted")+
geom_segment(x=4, xend=4, y=0, yend=26, size=1, linetype="dotted")+
geom_segment(x=0, xend=4, y=26, yend=26, size=1, linetype="dotted")+
annotate("point", x = 2, y = 6.1, color = "cyan", size = 4) +
annotate("text", x = 2, y = 3.5, label = "Punto de\n cierre de\n la empresa", colour = "deepskyblue", size = 4)+
annotate("text", x = 3.4, y = 20, label = "Curva de Oferta", colour = "darkgreen", size = 6, angle = 63)+
annotate("point", x = 3.3, y = 16, color = "black", size = 4) +
annotate("point", x = 4, y = 26, color = "black", size = 4) +
scale_x_continuous(#breaks=NULL,
                 limits=c(0,5.5),
                 expand=expand_scale(mult=c(0,0.1)))+
scale_y_continuous(#breaks=NULL,
                 limits=c(0,30),
                 expand=expand_scale(mult=c(0,0.1)))+
guides(fill=F)+
labs(#title = "Representative Firm",
   x = "Producción",
   y = "Precio")+
theme_classic(base_family = "Fira Sans Condensed", base_size=20) +
scale_x_continuous(breaks=c(0,2, 3.3, 4),
                 labels=c(0, expression(""), expression(q["1"]), expression(q["2"])),
                 limits=c(0,5),
                 expand=c(0,0))+
scale_y_continuous(breaks=c(0, 6.1, 16, 26),
                 labels=c(0,expression("P=CVMe"), expression(P["1"]), 
expression(P["2"])),
                 limits=c(0,30),
                 expand=c(0,0))
  • 2 个回答
  • 62 Views
Martin Hope
carl
Asked: 2025-04-30 18:42:19 +0800 CST

为什么我手机上显示的列表为空,而虚拟设备上显示的列表却为空?

  • 5

我在应用程序中的自定义列表视图中实现了搜索功能。问题是我遇到了这个错误(仅在实体手机上出现,虚拟机上没有):

java.lang.NullPointerException:尝试在空对象引用上调用接口方法“int java.util.List.size()”

我不明白为什么在虚拟设备上搜索功能运行良好。问题出在哪里?

这是我的代码:

CustomAdapterShoppingList班级:

public class CustomAdapterShoppingList extends BaseAdapter implements Filterable {

    List<Product> list;
    List<Product> listFiltered;
    Context mContext;

    public CustomAdapterShoppingList(@NonNull Context context, List<Product> products) {
        this.list = products;
        this.listFiltered = products;
        this.mContext = context;
    }

    @Override
    public int getCount() {
        return listFiltered.size();  <---- THE ERROR mentioned above
    }

    @Override
    public Product getItem(int position) {
        return listFiltered.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    private int lastPosition = -1;

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.shoplist_row, parent,
                    false);
        }
        Animation animation = AnimationUtils.loadAnimation(mContext, (position > lastPosition)
                ? R.anim.up_from_bottom : R.anim.down_from_top);
        convertView.startAnimation(animation);
        lastPosition = position;

            TextView number = convertView.findViewById(R.id.number);
            number.setText(position + 1 + ".");

            TextView name = convertView.findViewById(R.id.name);
            name.setText(listFiltered.get(position).getProduktName());
            
        return convertView;
    }

    @Override
    public Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
                FilterResults filterResults = new FilterResults();
                if (list == null) {
                    list = new ArrayList<>(listFiltered);
                }

                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
                    if (charSequence == null || charSequence.isEmpty()) {
                        filterResults.count = list.size();
                        filterResults.values = list;
                    } else {
                        List<Product> resultPrd = new ArrayList<>();
                        String searchStr = charSequence.toString().toLowerCase();

                        for (Product prd:list) {
                            if(prd.getProduktName().contains(searchStr)) {
                                resultPrd.add(prd);
                            }
                            filterResults.count = resultPrd.size();
                            filterResults.values = resultPrd;
                        }
                    }
                }
                return filterResults;
            }

            @SuppressWarnings("unchecked")
            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {

                listFiltered = (List<Product>) filterResults.values;
                notifyDataSetChanged();
            }
        };
        return filter;
    }
}

然后,使用以下代码调用类中的搜索功能ShoppinglistActivity:

adapter = new CustomAdapterShoppingList(getApplicationContext(), products);
                shoppingList.setAdapter(adapter);
                adapter.notifyDataSetChanged();
                sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        return false;
                    }
                    @Override
                    public boolean onQueryTextChange(String newText) {
                        adapter.getFilter().filter(newText);
                        return false;
                    }
                });
  • 2 个回答
  • 80 Views
Martin Hope
Piotr Siupa
Asked: 2025-04-30 17:24:29 +0800 CST

`--no-atomic` 是否保证在出现错误的引用之前更新引用?

  • 5

该标志--atomic保证git push命令是否成功或没有更新引用。

它是否--no-atomic只是关闭了这个保证,还是建立了相反的保证 - 即使存在一些错误,所有可能的引用都将被更新(或者至少在错误的引用之前的引用将被更新)?

例如,如果我运行命令git push --no-atomic origin foo bar,foo即使出现问题,也会在远程更新吗bar?

git
  • 1 个回答
  • 32 Views
Martin Hope
ffc2004
Asked: 2025-04-30 17:20:37 +0800 CST

Excel VBA - 仅转置为值[重复]

  • 6
这个问题已经有答案了:
如何粘贴值并保留源格式? (2 个答案)
10 小时前关闭。

我有下面的代码,我设法将它们拼凑在一起,将一张表中的行转置到另一张表中我需要的一行上 - 我现在遇到的问题是,当它从表中复制时,它也会复制表格式。

我不确定如何粘贴所有值而不是直接复制/粘贴。

Sub transpLeagueTable()
Dim MyTime, MyDate, MyStr
targetrow = 6
For i = 8 To ActiveSheet.Range("A" & Rows.Count).End(xlUp).row
    ActiveSheet.Range("A" & i & ":A" & i & ",C" & i & ":J" & i).Copy Worksheets("League Table CSV").Cells(targetrow, 2 + (i - 8) * 9)
Next i
Columns("A:A").EntireColumn.Hidden = False
Application.GoTo Sheets("League Table CSV").Range("A6"), True

Columns("A:A").EntireColumn.Hidden = True

Application.CutCopyMode = False
Application.GoTo Sheets("League Table CSV").Range("B6"), True

End Sub

我认为它是 .Copy 部分,但我不确定如何去改变它。

excel
  • 3 个回答
  • 52 Views
Martin Hope
MaxH
Asked: 2025-04-30 17:11:28 +0800 CST

如何加速 Leetcode 2290“到达拐角的最小障碍物移除量”的代码

  • 5

我正在解决一些 leetcode 问题。但是对于这个难题,我不知道如何进一步加快我的算法速度。

https://leetcode.com/problems/minimum-obstacle-removal-to-reach-corner/submissions/1621824895

public class Solution {

    public int MinimumObstacles(int[][] grid) {
        int m = grid.Length;
        int n = grid[0].Length;
        var field = new MyDict(m, n, grid);
        field[(0,0)].wallsToHere = 0;
        List<Cell> toDo = [field[(0,0)]];
        while(!toDo.Contains(field[(m-1,n-1)])){
            var c = toDo.OrderBy(x=>x.wallsToHere).First();
            try{
                var testC = field[(c.m-1,c.n)];
                CheckCell(testC, c, toDo);
            }catch{}
            try{
                var testC = field[(c.m+1,c.n)];
                CheckCell(testC, c, toDo);
            }catch{}
            try{
                var testC = field[(c.m,c.n-1)];
                CheckCell(testC, c, toDo);
            }catch{}
            try{
                var testC = field[(c.m,c.n+1)];
                CheckCell(testC, c, toDo);
            }catch{}
            toDo.Remove(c);
            c.done = true;
        }
        return field[(m-1,n-1)].wallsToHere;
    }

    private void CheckCell(Cell testC, Cell c, List<Cell> toDo){
        if(!toDo.Contains(testC) && !testC.done){
            if (testC.wallsToHere > c.wallsToHere + testC.value){
                testC.wallsToHere = c.wallsToHere + testC.value;
            }
            toDo.Add(testC);
        }
    }
}

public class Cell(int value, int m, int n){
    public int value = value;
    public int wallsToHere = (int)Math.Pow(10,5)+1;
    public int m = m;
    public int n = n;
    public bool done = false;
}

public class MyDict:Dictionary<(int,int),Cell>
{
    public MyDict(int m, int n, int[][] grid){
        this.m=m;
        this.n=n;
        this._grid = grid;
    }

    private int m;
    private int n;
    private int[][] _grid;

    public new Cell this[(int,int) key]{
        get{
            if (base.Keys.Contains(key)){
                return base[key];
            }
            else if (key.Item1 < 0 || key.Item2 < 0 || key.Item1 > m || key.Item2 > n){
                throw new Exception();
            }
            else{
                Cell c = new Cell(_grid[key.Item1][key.Item2], key.Item1, key.Item2);
                base[key] = c;
                return c;
            }
        }
    }
}

除了我的 MyDict 实现之外,我不确定如何使用我的 Dijkstra 方法更快地解决这个问题。

如果可能的话,我怎样才能加快速度并改进,而不使用其他方法?

c#
  • 1 个回答
  • 39 Views
Martin Hope
Nevpzo
Asked: 2025-04-30 16:48:41 +0800 CST

每次迭代时更改 tqdm 的颜色

  • 8

我用它tqdm来跟踪任务的进度。为了好玩,我想在每次迭代过程中动态更改进度条的颜色。

我知道可以使用 set_description() 来更新进度条的描述,但我还没找到类似的方法来更改进度条的颜色。有没有办法用 来实现tqdm?类似这样的代码(伪代码):

from tqdm import tqdm
import time

colors = ["red", "yellow", "green", "cyan", "blue"]

pbar = tqdm(range(5))
for i in pbar:
    pbar.set_color(colors[i])
    time.sleep(0.5)
python
  • 1 个回答
  • 34 Views
Martin Hope
Whirlwind
Asked: 2025-04-30 16:47:55 +0800 CST

createBackingData() 方法起什么作用?

  • 6

我注意到当我创建一个@Model并转到Xcode的Refactor->Generate成员初始化器时,Xcode会执行以下操作:

@Model
    class A {
        internal init(a: String = "", b: Date = Date(), _$backingData: any BackingData<SchemaV2.A> = A.createBackingData()) {
            self.a = a
            self.b = b
            self._$backingData = _$backingData
        }
        
        var a: String = ""
        var b: Date = Date()
    }

如果我使用自己的初始化程序手动执行此操作,我绝不会使用类似的东西createBackingData()。它的用途是什么?

swift
  • 1 个回答
  • 31 Views
上一页
下一页

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve