这个图里哪两行代码有问题啊?

img


这个图里哪两行代码有问题啊?( ・⊝・∞)
(✧∇✧)(✧∇✧)●)o(●(๑•̌.•̑๑)ˀ̣ˀ̣

cd不行,因为这两个成员是private的(没写也是默认private)

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7477589
  • 这篇博客你也可以参考下:安装infinity后主页始终显示百度页面?
  • 除此之外, 这篇博客: 浅谈设计模式 | 先有鸡还是先有蛋?先有代码后有设计模式还是先有设计模式再写代码?中的 1.单一职责原则 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

            简称SRP(Single Responsibility Principle)原则,每个类型(包括接口和抽象)功能要求单一,只负责一件事情,不能包罗万象

            例如一个 Modem(调制解调器)的接口

    interface Modem {
        public void dial(String pno);
        public void hangup();
        public void send(char c);
        public char recv();
    }

            这个接口中存在两个职责:第一个是管理连接(dial和hangup);第二个是数据传输(send和recv),这两个职责应该被分开。

  • 您还可以看一下 纪佳琪老师的机器学习之线性回归理论与代码实践课程中的 线性回归介绍与符号表示小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    需要提供更多上下文信息,例如图表和代码的具体内容以及语言。除此之外,如果在SVG中需要控制文本的自适应换行,可以通过编写一个wrap函数来实现。该函数可以将文本逐行分割,并适当调整每行的y坐标,以实现文本自适应换行和垂直居中。下面是一个wrap函数的示例代码:

    /**
     * 定义wrap函数,用于将文本自动换行
     * @param {svg select} text
     */
    function wrap(text) {
      text.each(function () {
        var text = d3.select(this)
        var words = text.text().split(' ').reverse()
        var lineHeight = 16
        var width = parseFloat(text.attr('width'))
        var y = parseFloat(text.attr('y'))
        var x = text.attr('x')
        var anchor = text.attr('text-anchor')
    
        var tspan = text
          .text(null)
          .append('tspan')
          .attr('x', x)
          .attr('y', y)
          .attr('text-anchor', anchor)
        var lineNumber = 0
        var line = []
        var word = words.pop()
    
        while (word) {
          line.push(word)
          tspan.text(line.join(' '))
          if (tspan.node().getComputedTextLength() > width) {
            lineNumber += 1
            line.pop()
            tspan.text(line.join(' '))
            line = [word]
            tspan = text
              .append('tspan')
              .attr('x', x)
              .attr('y', y + lineNumber * lineHeight)
              .attr('anchor', anchor)
              .text(word)
          }
          word = words.pop()
        }
        if (lineNumber) {
          d3.select(this).attr(
            'transform',
            'translate(0,' + (-lineNumber * lineHeight) / 2 + ')'
          )
        }
      })
    }
    

    该函数中的变量含义如下:

    • text:需要进行文本自适应换行的svg元素
    • words:将文本逐单词分割后的数组
    • lineHeight:每行文本之间的高度间隔
    • width:文本容器的宽度
    • y:文本容器的y坐标
    • x:文本容器的x坐标
    • anchor:文本的水平对齐方式
    • tspan:用于创建文本的tspan元素
    • lineNumber:文本的行数
    • line:当前行中的单词列表
    • word:当前未处理的单词

    在函数中,我们首先使用text.each函数来遍历每个文本元素,并对其进行自适应换行。然后,我们使用split函数将文本逐单词分割,并将其逆向排列,以便从后往前逐词处理。接着,我们定义了一个tspan元素,用于创建文本,并在其上设置元素属性。然后,我们启动一个循环,将每个单词依次加入当前行中,然后检查当前行的宽度是否超出了文本容器的宽度。如果超出了,则将该单词从当前行中删除,并将该行文本重新设置为当前行的其余单词,而将超出的单词用一个新的tspan元素进行绘制。最后,我们还需要将文本垂直居中,并根据行数适当调整文本的y坐标。

    注意,在使用该函数时,需要先为文本元素设置好width和y属性,以及其他样式属性,如font-size、font-weight、fill等。同时,该函数中的16、’ ‘等参数可以根据实际需求进行调整。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^