AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
ALICEZzz
Asked: 2025-04-29 23:14:59 +0800 CST

Como funciona o escopo do bloco? Como o padrão explica isso?

  • 8

Por exemplo, temos o seguinte código:

#include <stdio.h>
int main(void)
{
    int n = 4;
    {
        n++;
    }
    printf("%d\n",n);
    return 0;
}

Como o bloco interno vê a variável n? Como o padrão da linguagem C explica isso? Há algum tempo venho procurando uma resposta para essa pergunta. Na minha opinião, a resposta é a seguinte: em C17, temos (6.8 #3):

Um bloco permite que um conjunto de declarações e instruções seja agrupado em uma unidade sintática. Os inicializadores de objetos com duração de armazenamento automática e os declaradores de array de comprimento variável de identificadores comuns com escopo de bloco são avaliados e os valores são armazenados nos objetos (incluindo o armazenamento de um valor indeterminado em objetos sem um inicializador) cada vez que a declaração é alcançada, na ordem de execução, como se fosse uma instrução, e dentro de cada declaração na ordem em que os declaradores aparecem.

Se você não considerar os inicializadores, descobrirá que um bloco é composto apenas de algumas instruções. Usamos um bloco para avaliar todos esses operadores como uma unidade sintática. Em outras palavras, se você remover os caracteres {} do bloco, esses serão os mesmos operadores e o resultado será exatamente o mesmo, mas esses operadores não serão avaliados em uma unidade sintática:

#include <stdio.h>
int main(void)
{
    int n = 4;
    
        n++; // same effect but without {}
    
    printf("%d\n",n);
    return 0;
}

Também temos (6.2.1 # 4):

Se o declarador ou especificador de tipo que declara o identificador aparecer dentro de um bloco ou dentro da lista de declarações de parâmetros em uma definição de função, o identificador terá escopo de bloco, que termina no final do bloco associado.

A partir disso entendemos que n tem um escopo de bloco.

Se combinarmos tudo isso, descobrimos que n é incrementado como se o operador de incremento nunca tivesse aparecido no bloco interno.

Esta resposta está correta? Se não, explique o porquê. E cite um parágrafo do padrão da linguagem C.

c
  • 3 respostas
  • 100 Views
Martin Hope
PracticingPython
Asked: 2025-04-29 22:33:01 +0800 CST

Gráfico de barras empilhadas com barras duplas no Plotly Dash

  • 8

Estou tentando criar um gráfico de barras empilhadas de duas barras usando o Plotly.

Encontrei este código:

from plotly import graph_objects as go

data = {
    "original":[15, 23, 32, 10, 23],
    "model_1": [4,   8, 18,  6,  0],
    "model_2": [11, 18, 18,  0,  20],
    "labels": [
        "feature",
        "question",
        "bug",
        "documentation",
        "maintenance"
    ]
}

fig = go.Figure(
    data=[
        go.Bar(
            name="Original",
            x=data["labels"],
            y=data["original"],
            offsetgroup=0,
        ),
        go.Bar(
            name="Model 1",
            x=data["labels"],
            y=data["model_1"],
            offsetgroup=1,
        ),
        go.Bar(
            name="Model 2",
            x=data["labels"],
            y=data["model_2"],
            offsetgroup=1,
            base=data["model_1"],
        )
    ],
    layout=go.Layout(
        title="Issue Types - Original and Models",
        yaxis_title="Number of Issues"
    )
)

insira a descrição da imagem aqui Fonte: https://dev.to/fronkan/stacked-and-grouped-bar-charts-using-plotly-python-a4p

Isso funciona, mas preciso ir um passo além, se possível. Preciso que os vários modelos apareçam em ambos os lados de cada conjunto de barras, pois estou adicionando outro parâmetro (sim à esquerda e não à direita). No exemplo, o azul está sempre na barra da esquerda e o laranja e/ou verde estão sempre à direita. Estou procurando uma maneira de fazer com que qualquer uma dessas cores possa aparecer tanto à esquerda quanto à direita de um conjunto de barras, mas com valores diferentes. Por exemplo, no exemplo, o recurso tem uma contagem de barras azuis de 15, mas talvez no lado direito do recurso o azul tenha um valor de 5.

python
  • 1 respostas
  • 51 Views
Martin Hope
Peter Hull
Asked: 2025-04-29 22:26:31 +0800 CST

Ligação de expressões binárias em FXML

  • 8

Pela documentação, parece que deveria ser possível usar expressões simples ao calcular propriedades de elementos, mas sempre parece haver erros. A sintaxe está correta? Há mais alguma orientação disponível?

Um pequeno exemplo (baseado no javafx-archetype-fxmllink aqui ):

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.geometry.Insets?>

<VBox alignment="CENTER" spacing="20.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.nowhere.PrimaryController">
    <children>
        <!-- WORKS -->
        <Label text="${source.length}" />
        <!-- ERROR -->
        <Label text="${source.length*2}" />
        <Button fx:id="primaryButton" text="Switch to Secondary View" onAction="#switchToSecondary"/>
        <TextField fx:id="source" />
    </children>
    <padding>
        <Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
    </padding>
</VBox>

O objetivo é atualizar o texto do rótulo com o comprimento do texto no TextField (isso é apenas um exemplo)

Uma única variável ${source.length}é aceitável, mas uma expressão ${source.length*2}não. Parece que qualquer expressão binária ou unária é problemática.

O erro que vejo inclui este rastreamento de pilha:

Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Number.longValue()" because "<parameter1>" is null
    at [email protected]/com.sun.javafx.fxml.expression.Expression.lambda$multiply$2(Expression.java:932)
    at [email protected]/com.sun.javafx.fxml.expression.BinaryExpression.evaluate(BinaryExpression.java:55)
    at [email protected]/com.sun.javafx.fxml.expression.ExpressionValue.getValue(ExpressionValue.java:191)
    at [email protected]/com.sun.javafx.binding.ExpressionHelper.addListener(ExpressionHelper.java:64)
    at [email protected]/javafx.beans.value.ObservableValueBase.addListener(ObservableValueBase.java:57)
    at [email protected]/com.sun.javafx.fxml.expression.ExpressionValue.addListener(ExpressionValue.java:200)
    at [email protected]/javafx.beans.property.StringPropertyBase.bind(StringPropertyBase.java:171)
    at [email protected]/javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:318)
    at [email protected]/javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:235)
    at [email protected]/javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:767)
    at [email protected]/javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2939)
    at [email protected]/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2624)
    ... 11 more

No código-fonte com.sun.javafx.binding.ExpressionHelper(linha 64), parece que addListenertenta obter o valor do observável (o comentário diz "validar observável"), mas neste ponto o TextField não foi totalmente criado e, portanto, seu comprimento é avaliado como nulo, e a expressão binária null * 2 falha. Pelo que entendi, posso estar errado.

Estou usando Java 23 e JFX 24.0.1.

java
  • 1 respostas
  • 46 Views
Martin Hope
jb78685
Asked: 2025-04-29 19:18:51 +0800 CST

Como um atributo de instância do mesmo tipo que o tipo de instância é sugerido?

  • 8

Estou tentando atribuir uma variável a uma instância de uma classe de forma que a variável seja do mesmo tipo. Quero usar a própria instância na construção da variável. Para ser compatível com herança, quero usar a sugestão de tipo como, Selfem vez da classe.

As seguintes obras:

class Foo:

    var: "Foo"

    def bar(self) -> None:
        self.var = self

No entanto, varestá marcado como sendo do tipo , Fooem vez de Self. O que eu quero é:

from typing import Self

class Foo:

    var: Self

    def bar(self) -> None:
        self.var = self

Neste caso, o mypy me dá a seguinte mensagem:

error: Incompatible types in assignment (expression has type "Foo", variable has type "Self")  [assignment]

Claramente, selfnão é considerado como sendo do tipo, Selfmas somente do tipo Foo.

python
  • 1 respostas
  • 46 Views
Martin Hope
Ben
Asked: 2025-04-29 17:47:51 +0800 CST

Como você especifica um nome de variável para uma chamada de função usando uma variável de caractere em R?

  • 8

Estou tentando Rcriar uma função wrapper que chame uma função interna específica (que é uma função existente) e execute algumas ações com ela. Minha função wrapper incluirá um argumento funcpara a função interna que desejo chamar, e essa função sempre terá uma estrutura padrão específica com um argumento específico de interesse, mas o argumento pode ser chamado por um nome diferente em casos diferentes. Portanto, também quero um argumento na minha função wrapper arg.nameque especifique o nome de um dos argumentos da função interna. Também quero poder especificar argumentos adicionais com reticências ...para permitir outras entradas gerais para a função interna. Aqui está um esboço do que quero fazer (mas este código não funciona):

#Example of the internal function
#This would be an existing function - not one that I program myself
#The variable n might be named something different in some cases
EXISTING.FUNCTION <- function(a, n) { a + n^2 }

#Example of the wrapper function
#It includes arg.name to specify the name of the variable
MY.WRAPPER.FUNCTION <- function(value, func, arg.name, ...) {
  
  #Evaluate the internal function using inputs wrapper inputs
  OUTPUT <- func(arg.name = value, ...)
  
  #Return the output
  OUTPUT }

Quero poder chamar a função wrapper assim:

MY.WRAPPER.FUNCTION(value = 4, func = EXISTING.FUNCTION, arg.name = 'n', a = 3)

#What I want to get
[1] 19

#What I actually get
Error in func(arg.name = value, ...) : unused argument (arg.name = value)

Não tenho certeza de como Rreconhecer a sequência de caracteres arg.namecomo o nome da variável no uso interno da função interna especificada dentro da função wrapper. Acredito que isso use uma ou mais funções de avaliação (por exemplo, substitute, quote, as.name, etc.), mas ainda não consegui modificar o código acima para que ele seja arg.namereconhecido como identificador do nome do argumento na função interna.


Informações adicionais: O texto acima foi escrito para simplificar o problema, mas, se for relevante, as funções existentes com as quais quero trabalhar são funções quantílicas para distribuições de probabilidade. Normalmente, elas terão um argumento de probabilidade chamado, pmas quero considerar a possibilidade de alguém programar uma função quantílica com um nome diferente para o argumento de probabilidade. Não tenho certeza se esse contexto é relevante para a solução, mas essa é a motivação para o problema.

  • 2 respostas
  • 76 Views
Martin Hope
Daniel Lobo
Asked: 2025-04-29 16:03:05 +0800 CST

Sobrepor um ggplot em outro

  • 8

Tenho dois ggplotobjetos como abaixo.

library(ggplot2)

set.seed(1)
dat1 = data.frame(x = rnorm(1000), y = rnorm(1000))
dat2 = data.frame(x = rt(5000, 2))

Plot1 = ggplot(data = dat1, aes(x = x, y = y)) + geom_point()
Plot2 = ggplot(dat2) + geom_histogram(aes(x = x))

Agora eu gostaria de sobrepor Plot2na Plot1parte central esquerda de Plot1. Saída desejada

insira a descrição da imagem aqui

Para melhor visibilidade, também desejo ter alguma transparência Plot2para que Plot1não fique completamente mascarado na região de sobreposição.

Existe alguma maneira de fazer isso? Pesquisei informações relevantes na internet, mas todas parecem se referir à adição de camadas. Meu gráfico final será diferente de apenas adicionar camadas.

  • 2 respostas
  • 91 Views
Martin Hope
Dorkhan C.
Asked: 2025-04-29 08:15:33 +0800 CST

Como posso contar o número de colunas que têm pelo menos uma célula onde o número é maior que 0?

  • 8
Ano um b c
2017 0 1 3
2018 0 3 0
2019 0 0 0

Considerando a tabela acima, qual é uma fórmula do Excel que me ajude a contar quantas colunas têm pelo menos uma célula maior que 1? Gostaria de ter uma fórmula que funcionasse se eu tivesse 1.000 colunas.

Neste caso, a resposta deve ser 2 (colunas b e c).

Eu estava tentando usar diferentes combinações de COUNTIFS e SUM, mas não encontrei a correta. Até agora tentei

=SUM(--(MAX(B2:B4)>1), --(MAX(C2:C4)>1), --(MAX(D2:D4)>1))

Isso funciona, mas não é viável com 1000 colunas.

excel
  • 3 respostas
  • 97 Views
Martin Hope
Rango
Asked: 2023-08-19 00:38:46 +0800 CST

Pode "um construtor de movimento definido implicitamente" NÃO ser trivial?

  • 9

cppreference define "Construtor de movimento trivial":

O construtor de movimento para a classe T é trivial se todas as condições a seguir forem verdadeiras:

  • NÃO é fornecido pelo usuário (ou seja, é definido implicitamente ou padrão);

  • T não possui funções de membro virtual;T não possui classes básicas virtuais;

  • o construtor de movimento selecionado para cada base direta de T é trivial;

  • o construtor move selecionado para cada tipo de classe não estática (ou matriz de tipo de classe) membro de T é trivial.

cppreference também define "construtor de movimento definido implicitamente":

Se o construtor de movimento declarado implicitamente NEM for excluído NEM trivial, ele será definido (isto é, um corpo de função será gerado e compilado) pelo compilador se odr for usado ou necessário para avaliação constante.

O construtor de movimento declarado implicitamente NÃO deve ser excluído é óbvio. Mas "não deve ser trivial" soa confuso para mim.
Isso não significa que, se NÃO for trivial, deve ser "fornecido pelo usuário"? E se já é "um fornecido pelo usuário", então por que "um declarado implicitamente" entra em ação?
Então, o que há de errado aqui? Qual é o objetivo de um construtor de movimento declarado implicitamente NÃO ser trivial? Por favor ajude.

c++
  • 1 respostas
  • 76 Views
Martin Hope
land
Asked: 2023-08-17 23:37:46 +0800 CST

Por que usamos colchetes `[]` em condicionais?

  • 9

Neste exemplo:

type Action<T extends string, P = never> = {
  type: T;
} & ([P] extends [never]
  ? {}
  : {
      payload: P;
    });

Por que precisamos de colchetes em torno do condicional [P] extends [never]e qual é a diferença se não o usarmos assim P extends never?

Entendo o que esse tipo está fazendo, mas não consigo encontrar uma explicação sobre por que realmente precisamos de colchetes e por que não funciona sem eles.

EDIT: Deixe-me tentar com um exemplo mais simples:


type GetTest<T = never> = [T] extends [never] ? string : number;

type Test = GetTest; // type Test = string; 

Aqui está type Test = stringo esperado. Mas o que não entendi é o que acontece com a condição quando não temos colchetes, não obtemos, stringmas também não obtemos um number, em vez disso, obtemostype Test = never

type GetTest<T = never> = T extends never ? string : number;

type Test = GetTest; // type Test = never

typescript
  • 1 respostas
  • 57 Views
Martin Hope
Rick de Water
Asked: 2023-08-17 20:58:04 +0800 CST

Como forçar o tipo de retorno de uma correspondência para ()?

  • 9

No exemplo simplificado a seguir, o compilador reclama que uma ramificação da matchinstrução retorna bool, enquanto a outra retorna ().

use std::collections::{HashMap, HashSet};

fn main() {
    let available = HashMap::from_iter([(2, "b"), (3, "c"), (4, "d")]);
    let mut set = HashSet::new();
    
    for i in [1, 2, 3, 4, 5] {
        match available.get(&i) {
            Some(s) => set.insert(*s),
            None => ()
        }
    }
}

No entanto, isso resulta em um erro:

error[E0308]: `match` arms have incompatible types
  --> src/main.rs:10:21
   |
8  | /         match available.get(&i) {
9  | |             Some(s) => set.insert(*s),
   | |                        -------------- this is found to be of type `bool`
10 | |             None => ()
   | |                     ^^ expected `bool`, found `()`
11 | |         }
   | |_________- `match` arms have incompatible types

Como posso informar ao compilador que a instrução match deve retornar ()e que o boolretornado de insertdeve ser ignorado?

rust
  • 3 respostas
  • 79 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve