3 mins read

Kata -kata perpisahan saya dengan @unpack | julibloggers.com – Beragampengetahuan

Oleh: Tamás K. Papp

Re -Post dari:

Pertama, sedikit sejarah Julia. Saat parameter @unpack Makro pada tahun 2015, itu menggaruk gatal bagi pengguna Julia pada waktu itu, terutama mereka yang berasal (biasanya). cl:with-slots dan makro serupa. Berikan objek apa pun dengan atribut, dengan asumsi foo Dan barSeseorang dapat membawa mereka ke dalam lingkup

@unpack foo, bar = x

Bukannya canggung

foo = x.foo
bar = x.bar

Fungsi ini sangat berguna sehingga nanti (sekitar 2019) dimasukkan ke dalam paket kecilnya sendiri, unpack.jl.

Tentu saja, para pengembang Julia menyadari betapa hebatnya fitur ini dan Julia 1.7 (pada tahun 2021) membawa kita sintaks kehancuran properti.

(; foo, bar) = x

Tetapi karena 1.7 bukan LTS, banyak paket tidak memerlukan versi itu dan terus mengandalkan @unpack. Pada tahun 2023, SimpleUnpack.jl ditulis sebagai pengganti untuk penggunaan yang paling umum jika digunakan lebih mudah pada kompiler.

Karena Julia 1.10 adalah LTS, saya secara bertahap menghilangkan @unpack Dari paket saya setiap kali saya kebetulan merestrukturisasi mereka. Ini, benar, tidak perlu (akan bekerja selamanya), tetapi saya ingin menyederhanakan kode ketika saya kebetulan merestrukturisasi karena beberapa alasan lain. Saya mengambil kesempatan ini untuk merenungkan level yang berguna.

Ada banyak pelajaran tentang pengembangan perangkat lunak secara umum dan khusus untuk Julia:

  1. Makro memiliki kekuatan yang luar biasa. Tidak mengherankan bahwa pengguna LISP menganggap mereka sebagai fitur pembunuhan, mereka dapat memperluas bahasa dengan sintaks yang sangat berguna pada waktu berjalan dasar dan biaya waktu kompilasi tidak signifikan. Itu adalah keputusan yang bagus bagi Julia untuk memasukkan mereka.

  2. Cara terbaik untuk memperluas bahasa dengan fitur -fitur baru adalah dengan terlebih dahulu melakukannya sebagai paket. Ini memungkinkan pengujian dan berputar dengan cepat, menghasilkan produk terakhir yang dipoles yang mungkin dimasukkan bahasa.

  3. Ketika kode Julia Anda berfungsi, itu akan terus beroperasi untuk waktu yang lama, mampu selamanya di tanah 1.x. Unpack.jl masih memiliki 200 orang yang bergantung. Ini memungkinkan pengembang untuk meningkatkan dengan kecepatan mereka sendiri, memprioritaskan masalah yang lebih mendesak.

Contents

Fitur hadiah

Kutipan Emacs kecil ini membuat konversi dari @unpack ... TIBA (; ...)Juga bekerja pada kode multi -garis, dll., Pada file independen atau semua paket dibuka dired.

(defun my-julia-remove-unpack ()
  "Go from `@unpack' to `(; ...)` destructuring syntax. Works in dired mode and buffer."
  (interactive)
  (let* ((from (rx "@unpack"
                   (one-or-more space)
                   (or (seq "(" (group-n 1 (one-or-more (not "@"))) ")")
                       (group-n 1 (one-or-more (not (or ?@ ?\n))))
                       )
                   (one-or-more space)
                   "="))
         (to "(; \\1) ="))
    (cond
     ((eq major-mode 'julia-mode) (query-replace-regexp from to))
     ((eq major-mode 'dired-mode) (dired-do-query-replace-regexp from to))
     (t (message "Don't know what to do with mode %s" major-mode)))))

Ps

(Saya menghidupkan kembali blog saya setelah istirahat panjang.)

Software Terbaru Saat Ini



Aplikasi yang sedang trend saat ini

object oriented programming, programming language, programming adalah, web programming, belajar programming, tournament software, software, software adalah, contoh software, apa itu software, pengertian software, aplikasi, aplikasi penghasil uang, aplikasi bokep, aplikasi video, programming

#Kata #kata #perpisahan #saya #dengan #unpack #julibloggers.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *