factory 키워드를 사용하여 하나의 생성자만 있는 클래스는 확장이 안된다.

최근 플러터를 통하여 앱 프로젝트를 만들고 코딩하고있을때 있던 일이였다. 어플에 http통신을 구현할려고 하는데, dart언어에 기본적으로 httpclient 객체가 지원하고 있었다. 그래서 해당 객체의 자식클래스를 만들어서 코딩할려고 할려고 하니 갑자기 에러창이 뜨게 되었다. import "dart:io"; class Custom extends HttpClient {/*****/} //error message /*The class 'Custom' cannot extend 'HttpClient' because 'HttpClient' only has factory constructors (no generative constructors), and 'Custom' has at least one generative constructor. Try implementing the class instead, adding a generative (not factory) constructor to the superclass Custom, or a factory constructor to the subclass....

December 19, 2021

몇몇 타입이 구조체의 맴버변수를 리턴 못하는 이유

코딩하던 도중에, 구조체의 변수값을 리턴하는 함수를 만들던 도중에 있던일을 적을라고 한다. 일단 구조체에 있는 문자열 변수를 읽는 함수를 제작했다 하자. struct A { num : u32, s : String } impl A { fn get_string(&self) -> String { self.s } /***/ } fn main() { let object = A{num : 0,s : String::from("")}; let _copyS = object.get_string(); /***/ } 다른 언어에서 작성하던것처럼 문자열의 getter를 함수로 만들어 놓고 컴파일 해보니 이런 에러가 뜬다....

December 5, 2021

리시버 있는 함수 리터럴 유용한 사용

계기 코틀린으로 코딩하는도중 예전에 쓰던 exposed 프레임워크의 코드줄에서 궁금증이 생겼는데. import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.transactions.transaction object Users : Table() { ... val name = varchar("name", length = 50) ... } transaction { .... .... Users.update({ Users.name eq "city"}) { it[name] = "bob" } } 이라는 코드줄이 있다고 할때, User 싱글톤 객체에 name에 infix 함수인 eq가 있다. 그럼 이걸 update함수 밖에서 써도 될까에서 시작해서 그렇게 작성해서 컴파일 해봤는데. import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.transactions.transaction object Users : Table() { ....

November 25, 2021

코틀린 하면서 느낀 infix 유용함

코틀린으로 spring 프로젝트를 코딩하고 있는데, 데이터베이스를 사용해야해서 JetBrains(코틀린 만든회사)에서 만든 exposed 라는 sql프레임워크를 사용하게 되었다. 그렇게 해당 라이브러리로 테이블 객체를 만들고, select를 수행하는 함수에서 where 문을 추가해야 하는 상황에서 infix 함수를 사용하게 되었다. 일단 예시로 평소에 나는 이렇게 코딩하고 있었다 /* ... ... ... */ data class User : Table() (val name : String,val age : Int,/*..*/) data class NameAndAge(/*..*/) fun selectUser() : List<NameAndAge> { //select 안에 where 관련 기능이 추가된다....

November 23, 2021

모듈 임포트

러스트로 코딩하는도중, 소스코드를 분리할 필요성을 느껴 별도의 모듈로 만들고나서 임포트 할려고 할때, 해당 프로젝트안의 로컬 모듈들을 어떻게 임포트 하는지, 기억하기 힘들어 따로 이렇게 글을 작성할 필요성을 느꼇다. 러스트에서는 mod라는 키워드가 있는데, 해당 키워드는 두가지의 기능을 수행한다. c++.c#처럼 네임스페이스 비슷한 기능을 한다. 다른 모듈들을 인클루드 한다. 예시로 이런 코드가 있다고 치자 // path : src/main.rs /* similar c++ namespace module { void hello() { std::cout << "hello world" << std::endl; } }; int main() { module::hello(); return 0; } */ mod module { pub fn hello() { println!...

November 4, 2021

trait를 리턴하는 방법

러스트로 코딩하던 도중에 트레이드를 리턴해야하는 함수를 만들어야 하는 상황이 있었다. 그래서 go언어를 코딩하는것과 마찬가지로 리턴타입을 트레이드(go언어에선 인터페이스)로 하여 리턴 하는 함수를 작성후 컴파일 해본적이 있었는데 그때의 일을 적어볼려고 한다. //go 코드 예시 package main import "fmt" type Hi interface { hi() } type String struct { s string } func new_hi(s string) Hi { return &String{s} } func (s *String)hi() { fmt.Println("hi : "s.s) } func main() { var str = "sunken ahn" new_hi(str)....

October 30, 2021

julia-'dot 연산자'

julia에 dot 연산자라고, 배열안의 요소별로 각각 연산해주는것이 있다. 예시로 백터를 생성후 요소값들을 각각 하나씩 더하고 싶을때 보통은 for문등 방법을 사용하는게 보통이다. julia> x = [1,2,3,4,5] #output #5-element Vector{Int64}: # 1 # 2 # 3 # 4 # 5 julia> i = 1 julia> while i <= 5 x[i] = x[i]+2 global i += 1 end julia> x #output #5-element Vector{Int64}: # 3 # 4 # 5 # 6 # 7 허나 julia에서는 dot 연산자를 사용해 한줄코드로 간단하게 사용할수 있다....

July 26, 2021

julia-'이름 규칙'

julia 공식 매뉴얼에서 변수 관련 문서를 보고 코드를 작성하면서 몇가지 특징을 알게 되었다. 첫째로 요즘 언어들도 갖고있는 특성이지만 유니코드를 지원하여, 한글로 변수명이 가능하다는것과 심지어 특수기호로도 변수명이 되는걸 알수있다. 그렇다고 해서 한글 또는 특수기호로 변수명을 작성해서 사용하는건 비추천한다, 왜냐하면 julia는 이름 규칙이 따로 존재하기 때문이다. julia 명명 규칙 (발번역 주의) 변수명은 소문자로 한다 #example name = "Sunken Ahn" 단구 구분은 언더바(_)로 구분, 단 이름이 읽기 어려운게 아니면 사용은 자세 #example my_name = "Sunken Ahn" 모듈,타입은 단어 시작을 대문자로, 단어구분도 단어 첫글자를 대문자로 하여 구분 #example struct Foo bar baz end foo = Foo(1,2) 함수, 매코르는 언더바(_)없이 소문자 #example function f(x,y) x + y end 인수로 쓰는 함수(“mutating” or “in-place” functions)는 이름이 !...

July 24, 2021

julia-'julia 이란?'

최근들어 알고리즘, 영어, 수치 해석, 정보 처리 기사 공부들이 하기 힘들어서 구글링을 하며 시간을 보내던중, 스택오버플로우 2020 survey에서 개발하고 있고, 또는 개발하고 싶은 언어 상위권을 보던도중 julia라는 새로보는 언어가 있는걸 알게되고, 요즘 공부도 별로 안되니 취미로써(?) 해당 언어를 배우기로 결정하였다. julia 언어 해당 언어에 대해 알아본 결과 수치해석에 사용하는 프로그래밍 언어로 보인다. 또한 공식 사이트에서 해당 언어의 장점이 설명되있는데 부족한 영어실력으로 발변역을 해본결과.. Fast : 높은 성능에 맞쳐 디자인 하였으며, LLVM를 통해 효과적으로 멀티 플랫품에서 네이티브 코드로 컴파일 하였습니다....

July 23, 2021